2017-11-04 2 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 
관련 문제