2017-11-04 116 views
2

我在使用結構化參考時觸發Worksheet_Change宏時出現問題。我發誓我之前工作過,所以我認爲這是一個語法問題。VBA 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 
+0

你的代碼的邏輯是'If ... ElseIf ... End If',而不是'If ... End If,If ... End If' – Variatus

回答

1

嘗試If Target.Address(False, False) = "MonsterStats[Monster Name]" Then或 「MonsterStats [怪物名稱]」 的值設置爲絕對地址,比如$ A $ 1(而不是A1) 。

+0

這樣做!非常感謝 – bigbucky

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