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

时间:2017-11-04 04:56:41

标签: excel vba excel-vba worksheet

在使用结构化引用时,我遇到了触发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

2 个答案:

答案 0 :(得分:1)

您可以尝试使用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

答案 1 :(得分:1)

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