我已经有一个宏进入每个工作表的单元格F4并重命名该工作表的名称(我正在运行很多间接,因为我从很多不同的工作表中拉出来)。每张纸上的每个F4单元都链接到具有所有名称的主表单 - 因此当我更改主表单中的硬编码时,它会更改该特定表单的单元格F4。但是,为了使宏运行并且该表将其自身重命名为F4,我需要手动转到该表并单击F2然后在单元格F4中输入,然后宏重命名表单,其他一切都有效。我该如何拥有它以便自动执行此操作?
- 非常抱歉,如果这已经解决了,请阅读一堆评论,但没有一个真正解决我需要的问题
'''这是我重新命名工作表所需要的,只需要调整它以便在我更改主文件后“F2和Enter”自身,这反过来又改变了单元格F4的值“
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address(0, 0) = "F4" Then
Sh.Name = Sh.Range("F4").Value
End If
End Sub
如果你把它作为主表单的Worksheet_Change
事件:
Private Sub Worksheet_Change(ByVal Target As Range)
For Each sh In ThisWorkbook.Sheets
If sh.Name <> Target.Parent.Name And sh.Name <> sh.Range("F4") Then
sh.Name = sh.Range("F4")
End If
Next
End Sub
这将在每次对主工作表进行更改时运行,如果它看到一个名称与该工作表F4值不同的工作表(Master除外),它将更正它。
但请记住,您需要确保F4中没有两个表具有相同的值,因为没有两个选项卡可以具有相同的名称。
尝试一下:
Sub KickStart()
Dim sh As Worksheet
For Each sh In ThisWorkbook.Sheets
sh.Select
Range("F4").Select
Application.SendKeys "{F2}"
Application.SendKeys "{ENTER}"
DoEvents
Next sh
End Sub