|
▼UO3 さん:
色々とご説明をありがとうございます。
確かにL30もI36も結合セルだったため動いてなかったようです。
セルを結合させずにマクロを実行したら動きました。
もし結合セルのままマクロを動かすとした場合、以下の
If Target.Count > 1 Then Exit Subを外せばよいのでしょうか。
また、外してみたのですがその場合If Target.Value = "" Then
のところで型が違うとエラーになりました。
空白だった時と他の書き方はありますか?
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub ’<<ここを省略?
If Application.Intersect(Target, Range("l30")) Is Nothing Then Exit Sub
Application.EnableEvents = False
If Target.Value = "" Then’<<ここで型が違うとエラーが出ます。
Range("I36") = ""
Else
P = MsgBox("有りですか?", vbYesNo)
If P = vbYes Then
Range("I36") = "有り"
Else
Range("I36") = "無し"
End If
End If
Application.EnableEvents = True
End Sub
>▼けい さん:
>
>追加で。
>
>たとえばL30を含んで、複数セルを選択して(たとえがL30とL31)クリアキーを押すと
>Target.Address は "$L$30:$L$31" になりますので、 $L$30 ではないと見なされます。
>このような場合を想定するなら、PonPonさんがアドバイスされたように、Intersect を使ってください。
>ただし、PonPonさんのコードでは、その前に、変更のあったセルが1つではなかったらExitさせています。
>これをなくせばよろしいかと。
|
|