- ベストアンサー
Excel VBAでメッセージとセル選択のループを回避したい
- Excel VBAを使用して、入力されたセルの値に応じてメッセージボックスを表示し、セルの枠線を変更する方法を教えてください。
- Excel VBAを使って、セルA1の入力規則のリストから「重要」と選択された場合、メッセージボックスに「重要です」と表示し、他の複数のセルの枠線を太くします。セルA1が「重要」と異なる値に変更された場合は、複数のセルの枠線を細くしたいです。
- Excel VBAを使用して、セルの値に応じてメッセージを表示し、セルの枠線を変更するプログラムを作成しましたが、セルを選択するたびにメッセージが表示されてしまいます。メッセージはセルの値が変更された場合にのみ表示されるようにしたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Private Sub Worksheet_Change(Byval Target As Range) '>メッセージはA1が"重要"になるごとに一度だけ表示 if application.intersect(target, range("A1")) is nothing then exit sub If Range("A1") = "重要" Then MsgBox "重要です" Range("重要項目"). Select Selection. BorderAround weight:= 4 else Range("重要項目"). Select Selection. BorderAround weight:= 2 End IF End Sub などのように,A1がchangeをトリガしたのかどうかを調べて分岐します。 単セルしか絶対操作しない(それ以外の時は不定の動作を許容する)なら private sub worksheet_change(byval target as range) if target.address = "$A$1" then ’A1セルが1つ変更されたので,その時の動作を行う end if end sub のような組み立てもあります。
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
>「重要項目」のセルに入力Enterするたびにメッセージが表示されてしまい '// Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub With Range("重要項目") If Target.Value Like "重要*" Then .BorderAround Weight:=xlThick .Select ''不要なら外す MsgBox "重要です", vbExclamation Else .BorderAround Weight:=xlThin End If End With End Sub '//
お礼
ありがとうございました。こういう方法もあるのですね。勉強になりました。
お礼
ありがとうございました。最初のコードを参考にして無事希望の動作ができました。