エクセルでchangeプロジェクトを複数設定する場
すみません、マクロの基本的な部分を分かっておらず、Google検索などで知識を得た程度のど素人なのですが。
A1にあ・い
A2にう・え
A3にお・か
をプルダウンで選べるように設定していて
【い】を選んだ場合は選択肢を【う】と【お】のみにする
【あ】を選んだら選択肢を戻す
【え】を選んだ場合は選択肢を【あ】と【お】のみにする
【う】を選んだら選択肢を戻す
【か】を選んだ場合は選択肢を【あ】と【う】のみにする
【う】を選んだら選択肢を戻す
という挙動を設定したく、複数のchangeプロジェクトを書いてみたのですが、どうしても1箇所のみうまくいきません。(下のマクロでは【え】を選んだ場合、A3の選択肢が消えない。)
書き方・考え方自体が間違っているのかもしれませんが、教えていただけませんでしょうか。
Private Sub Worksheet_Change(ByVal Target As Range)
処理1 Target
処理2 Target
処理3 Target
End Sub
Private Sub 処理1(ByVal Target As Range)
If Intersect(Target, Range("A1")) Is Nothing Then
Exit Sub
Else
If Range("A1").Value = "い" Then
With Range("A2").Validation
.Delete
.Add _
Type:=xlValidateList, _
Formula1:="う"
End With
Range("A2") = "う"
With Range("A3").Validation
.Delete
.Add _
Type:=xlValidateList, _
Formula1:="お"
End With
Range("A3") = "お"
MsgBox "入場区分を【い】に設定した場合は、分配フラグは【え】、お客様情報取得フラグは【お】に固定となります。"
ElseIf Range("A1").Value = "あ" Then
With Range("A3").Validation
.Delete
.Add _
Type:=xlValidateList, _
Formula1:="お,か"
End With
With Range("A2").Validation
.Delete
.Add _
Type:=xlValidateList, _
Formula1:="=INDIRECT(A1)"
End With
End If
End If
End Sub
Private Sub 処理2(ByVal Target As Range)
If Intersect(Target, Range("A2")) Is Nothing Then
Exit Sub
Else
If Range("A2").Value = "え" Then
With Range("A3").Validation
.Delete
.Add _
Type:=xlValidateList, _
Formula1:="お"
End With
Range("A3") = "お"
With Range("A1").Validation
.Delete
.Add _
Type:=xlValidateList, _
Formula1:="あ"
End With
Range("A1") = "あ"
MsgBox "分配フラグを【え】に設定した場合は、入場認証区分は【あ】、お客様情報取得フラグは【お】に固定となります。"
ElseIf Range("A2").Value = "う" Then
With Range("A3").Validation
.Delete
.Add _
Type:=xlValidateList, _
Formula1:="お,か"
End With
With Range("A1").Validation
.Delete
.Add _
Type:=xlValidateList, _
Formula1:="=INDIRECT(A3)"
End With
End If
End If
End Sub
Private Sub 処理3(ByVal Target As Range)
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A3")) Is Nothing Then
Exit Sub
Else
If Range("A3").Value = "か" Then
With Range("A1").Validation
.Delete
.Add _
Type:=xlValidateList, _
Formula1:="あ"
End With
Range("A1") = "あ"
With Range("A2").Validation
.Delete
.Add _
Type:=xlValidateList, _
Formula1:="う"
End With
Range("A2") = "う"
MsgBox "お客さま情報をかに設定した場合は、入場区分は【あ】、分配フラグは【う】に固定となります。"
ElseIf Range("A3").Value = "お" Then
With Range("A1").Validation
.Delete
.Add _
Type:=xlValidateList, _
Formula1:="あ,い"
End With
With Range("A2").Validation
.Delete
.Add _
Type:=xlValidateList, _
Formula1:="=INDIRECT(A1)"
End With
End If
End If
End Sub
お礼