我已经有了一个宏,它进入每个工作表的单元格F4并重命名该工作表(我运行了很多间接操作,因为我从许多不同的工作表中提取数据)。每个工作表上的每个F4单元格都链接到一个具有所有名称的母版工作表-因此,当我在母版中更改硬代码时,它会更改该特定工作表的单元格F4。但是,为了使宏运行并将该工作表自身重命名为F4,我需要手动转到该工作表,单击F2,然后在单元格F4中输入,然后宏重命名该工作表,然后一切正常。我怎样才能让它自动完成这项工作呢?
-Terribly很抱歉,如果这个问题已经解决了,我通读了一堆评论,但没有一个真正解决了我需要的问题
‘这是我用来重命名工作表的方法,只需要调整它,使它在我更改主文件后"F2“并输入”s“本身,这反过来会更改单元格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发布于 2019-04-05 22:49:44
如果将其作为主表的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值不同,它将更正它。
但请记住,您需要确保没有两个工作表在F4中具有相同的值,因为没有两个选项卡可以具有相同的名称。
发布于 2019-04-05 22:17:43
试一试:
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 Subhttps://stackoverflow.com/questions/55536826
复制相似问题