別のセルが変更されたときにセルをリセットするコードを作成しようとしています。ドロップダウンセルは3つあり、各セルはその前のセルに依存しています(B3はB2に依存し、B4はB3とB2に依存しています)。
したがって、誰かがB4を設定してからB2を変更すると、無効な組み合わせになります。したがって、上のセル値が変更されると、下のセルがデフォルト値に強制されます(B1が値2のときにB4が値3にしかできない場合、B1が値1に変更されると、B4は値1に強制されます)
私が現在使用しているコードは次のとおりです。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Target.Worksheet.Range("B2")) Is Nothing Then
If Sheet("Talent Sheet").Range("B2") = Human Then
Sheet("Talent Sheet").Range("B3") = Warrior
Sheet("Talent Sheet").Range("B4") = "Human Noble"
Else
If Sheet("Talent Sheet").Range("B2") = Elf Then
Sheet("Talent Sheet").Range("B3") = Warrior
Sheet("Talent Sheet").Range("B4") = "City Elf"
Else
If Sheet("Talent Sheet").Range("B2") = Dwarf Then
Sheet("Talent Sheet").Range("B3") = Warrior
Sheet("Talent Sheet").Range("B4") = "Dwarf Commoner"
End If
End If
End If
これにより、B2が変更されると、B3とB4がデフォルトに強制されますが、「サブまたは関数が定義されていません」というコンパイルエラーが発生します。
何が原因なのか正直わかりません。M $ヘルプは、サブプロシージャのスペルが間違っているためだと言っていますが、このコードの一部をコピーして、多くのソースと照合しました。