Excel VBA进入每个工作表的单元格并刷新(F2 + Enter)

时间:2019-04-05 13:46:10

标签: excel vba

我已经有一个宏可以进入每个工作表的单元格F4,并将该工作表重命名为该工作表(我正在运行很多间接调用,因为我从许多不同的工作表中提取数据)。每个工作表上的每个F4单元都链接到具有所有名称的母版工作表-因此,当我更改母版中的Hardcode时,它会更改该特定工作表的单元格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

2 个答案:

答案 0 :(得分:0)

尝试一下:

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

答案 1 :(得分:0)

如果您将它作为主表的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中没有两个工作表具有相同的值,因为两个选项卡都不能具有相同的名称。