• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA MsgBOXでの処理分岐)

VBAでMsgBoxを使用して処理分岐する方法

このQ&Aのポイント
  • B列に「抹消」と入力した場合、別の列に「抹消」と記載するマクロを作成したいです。
  • B列に「抹消」と入力した場合、MsgBoxを表示して「抹消しますか?」と確認したいです。
  • MsgBox関数を挿入しようとしていますが、エラーが発生しています。どこに挿入すればよいでしょうか?

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

  • ベストアンサー
回答No.1

つまらぬ心配ですが、「抹消」と「末梢」とか、打ち間違えないようご注意。私は間違えました(笑) リストの機能で B 列の値を制限でもしておけば、それは回避できそうですね。 MsgBox 関数を入れる場合、On Error Resume Next のままにしておくと B 列以外の変更であっても何でもかんでもメッセージが出てしまうので、On Error Resume Next は削除します。元々、一般的には、変更するセル範囲を絞ってプロシージャを実行する場合、On Error Resume Next により力ずくで動かすよりも、Intersect メソッドで場合分けをします。 Private Sub Worksheet_Change(ByVal Target As Excel.Range)   Dim h As Range   If Intersect(Target, Range("B:B")) Is Nothing Then Exit Sub   For Each h In Intersect(Target, Range("B:B"))     If h.Value = "抹消" Then       If MsgBox(prompt:="抹消しますか?", Buttons:=vbOKCancel) = vbOK Then         Cells(h.Row, "E").Resize(1, 7).SpecialCells(xlCellTypeConstants).Value = "抹消"       End If     End If   Next h End Sub

banananakaji
質問者

お礼

ありがとうございました。とても勉強になりました。

関連するQ&A