2017-11-04 7 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を試すか$ A $ 1(代わりのA1)のように、絶対アドレスに "MonsterStats [モンスター名]" の値を設定します。

+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 
関連する問題