- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA MsgBOXでの処理分岐)
VBAでMsgBoxを使用して処理分岐する方法
このQ&Aのポイント
- B列に「抹消」と入力した場合、別の列に「抹消」と記載するマクロを作成したいです。
- B列に「抹消」と入力した場合、MsgBoxを表示して「抹消しますか?」と確認したいです。
- MsgBox関数を挿入しようとしていますが、エラーが発生しています。どこに挿入すればよいでしょうか?
- みんなの回答 (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
お礼
ありがとうございました。とても勉強になりました。