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

问题描述 投票:2回答:2

我已经有一个宏进入每个工作表的单元格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
excel vba
2个回答
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值不同的工作表(Master除外),它将更正它。

但请记住,您需要确保F4中没有两个表具有相同的值,因为没有两个选项卡可以具有相同的名称。


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
© www.soinside.com 2019 - 2024. All rights reserved.