VBA Worksheet_change宏未检测到结构化引用表中的更改



在使用结构化引用时,我在触发Worksheet_Change宏时遇到问题。 我发誓我以前让它工作过,所以我认为这是一个语法问题。

当我使用"$A$1"类型引用目标单元格时,它工作正常。 但是当我对更改的单元格使用结构化引用时,它不起作用。 其他结构化引用都可以正常工作。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Or IsEmpty(Target) Then Exit Sub
    If Target.Address = "MonsterStats[Monster Name]" Then
        Range("B25").Font.Bold = False
        Range("B25").Font.Italic = False
        Range("B25") = Range("MonsterStats[Ability1]") & Range("MonsterStats[Ability1 Text]")
        Range("B25").Characters(1, Len(Range("MonsterStats[Ability1]"))).Font.Bold = True
        Range("B25").Characters(1, Len(Range("MonsterStats[Ability1]"))).Font.Italic = True
    End If
    If Target.Address = "$P$3" Then
        Range("B26").Font.Bold = False
        Range("B26").Font.Italic = False
        Range("B26") = Range("MonsterStats[Ability1]") & Range("MonsterStats[Ability1 Text]")
        Range("B26").Characters(1, Len(Range("MonsterStats[Ability1]"))).Font.Bold = True
        Range("B26").Characters(1, Len(Range("MonsterStats[Ability1]"))).Font.Italic = True
    End If
End Sub

尝试If Target.Address(False, False) = "MonsterStats[Monster Name]" Then或将"MonsterStats[Monster Name]"的值设置为绝对地址,例如$A$1(而不是A1)。

您可以使用 Intersect 方法尝试:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Me.Range("MonsterStats[Monster Name]"), Target) Is Nothing Then
        ' do stuff
    End If
End Sub

最新更新