マクロで隣のセルの内容によってリストの内容を変化させたい

B列のグループによってC列の人を変えたい
f:id:elve:20190701220408p:plain

マクロなしは前記事参照
snack.elve.club

これをマクロで記録して整頓すると

Sub Macro1()
 '名前を付ける
Range("H1:H5,I1:I4,J1:J6,K1:K7,L1:L5").CreateNames Top:=True, Left:=False, Bottom:=False, Right:=False
 'B列リスト設定
Range("B2:B6").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=グループ"
End With
 'C列リスト設定
Range("C2:C6").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=INDIRECT(B2)"
End With
Range("B2").Select
End Sub

これ実行するとエラーになりますん( ノД`)シクシク…
f:id:elve:20190701221846p:plain

f:id:elve:20190701221913p:plain

C列にB列で指定した範囲を見てね、ってやってるので空欄だと死ぬわけですな・・・。
回避方法が分からなかったので、未定義という空欄の範囲を追加しました( ノД`)シクシク…

Sub Macro1()
 '名前を付ける
Range("G1:G2,H1:H5,I1:I4,J1:J6,K1:K7,L1:L5").CreateNames Top:=True, Left:=False, Bottom:=False, Right:=False
 'B列リスト設定
Range("B2:B6").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=グループ"
End With
Range("B2:B6") = "未定義"
 'C列リスト設定
Range("C2:C6").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=INDIRECT(B2)"
End With
Range("B2").Select
End Sub

f:id:elve:20190701222308p:plain

もっといい方法があったら教えてください(´・ω・`)

どのくらい面白かった?

星を押して送信してね

平均 0 / 5. Vote count: 0

是非フォローしてください

最新の情報をお伝えします

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です