• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBAでメッセージとセル選択のループを回避したい)

Excel VBAでメッセージとセル選択のループを回避したい

このQ&Aのポイント
  • Excel VBAを使用して、入力されたセルの値に応じてメッセージボックスを表示し、セルの枠線を変更する方法を教えてください。
  • Excel VBAを使って、セルA1の入力規則のリストから「重要」と選択された場合、メッセージボックスに「重要です」と表示し、他の複数のセルの枠線を太くします。セルA1が「重要」と異なる値に変更された場合は、複数のセルの枠線を細くしたいです。
  • Excel VBAを使用して、セルの値に応じてメッセージを表示し、セルの枠線を変更するプログラムを作成しましたが、セルを選択するたびにメッセージが表示されてしまいます。メッセージはセルの値が変更された場合にのみ表示されるようにしたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

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 のような組み立てもあります。

daifuku999
質問者

お礼

ありがとうございました。最初のコードを参考にして無事希望の動作ができました。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

>「重要項目」のセルに入力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 '//

daifuku999
質問者

お礼

ありがとうございました。こういう方法もあるのですね。勉強になりました。