EXCEL VBA 动态 Sheet 根据单元格值命名 - 当公式在单元格中时不起作用

EXCEL VBA Dynamic Sheet Name according to a cell value - Not working when formula in the cell

他,

我创建了一个 VBA 小代码来动态重命名工作表。

当单元格只是手动输入时,它工作得很好。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("C9")) Is Nothing Then
        ActiveSheet.Name = ActiveSheet.Range("C9")

    End If
End Sub

但是一旦我将一个公式连接到 C9 单元格中的 2 个单元格值,它就不会自动更新。 为了让它工作,我需要输入单元格并再次键入 ENTER 并且它工作。 每次更改连接的 2 个单元格中的一个值时,我都必须执行相同的操作。

感谢你们的帮助

您需要捕获一个不同的事件

  Private Sub Worksheet_Calculate()
    Application.EnableEvents = False
        ActiveSheet.Name = ActiveSheet.Range("C9")
    Application.EnableEvents = True
 End Sub

注意:

我们在名称更改期间禁用事件,以防工作表包含引用选项卡名称的公式。

这应该有效:

替换

ActiveSheet.Name = ActiveSheet.Range("C9")

来自

ActiveSheet.Name = ActiveSheet.Range("C9").Value

如果有人仍想在工作表更改事件中执行此操作,则这是替代答案

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False

    Dim formulacell As Range
    Set formulacell = Range("C9")
    Set formulacell = Application.Union(formulacell, formulacell.Precedents)

    If Not Intersect(Target, formulacell) Is Nothing Then
        ActiveSheet.Name = ActiveSheet.Range("C9").Value
    End If

    Application.EnableEvents = True
End Sub