【问题标题】:Excel VBA to go into cell in each sheet and refresh (F2+Enter)Excel VBA 进入每个工作表中的单元格并刷新(F2+Enter)
【发布时间】:2019-04-05 22:49:43
【问题描述】:

我已经有一个宏进入每个工作表的单元格 F4 并将该工作表重命名为该名称(我正在运行很多间接操作,因为我从很多不同的工作表中提取)。每张工作表上的每个 F4 单元格都链接到具有所有名称的主工作表 - 因此,当我更改主工作表中的硬代码时,它会更改该特定工作表的单元格 F4。但是,为了使宏运行并且该工作表将自身重命名为 F4,我需要手动转到该工作表并单击 F2,然后在单元格 F4 中输入,然后宏重命名工作表,其他一切正常。我怎样才能拥有它以便它会自动执行此操作?

-如果这个问题已经解决,非常抱歉,阅读了一堆 cmets,但没有一个真正解决我需要的问题

'''这就是我重命名工作表的方法,只需要在我更改主文件后对其进行调整,使其“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

【问题讨论】:

  • 为什么您的宏不能只查看主工作表并在那里找到新工作表名称?
  • @PeterT 评论+1。只需在主工作表上创建一个Worksheet_Change 事件,它将触发工作表名称更改,这就是您所需要的。

标签: excel vba


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    试试这个:

    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
    

    【讨论】:

    • 嘿,Gary 的学生,这似乎是在正确的轨道上,我只得到一个运行时错误,对象_worksheet 的方法选择失败标记 sh.Select - 我在这里完全不属于我的联盟如果我说一些荒谬的事情,请道歉
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多