VBA Worksheet_changemacros未检测到结构化参考表中的更改

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

当我使用“$ 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或将If Target.Address(False, False) = "MonsterStats[Monster Name]" Then的值设置为绝对地址,如$ 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