見出し画像

つかえるExcelマクロ[マクロルーティン#4](セルのコピー)貼り付ける前に確認してね!

この記事はマクロルーティン#4(セルのコピー)で書いたマクロを実用的にするためコードを追加する書き方をご紹介しています。
シートに、なにかしらデータを貼りつけるときって、貼り付け先に何かデータがあっても上書きされますよね。
ですので、マクロでデータをコピペする前には確認のため、「ほんとに貼り付けてもいいですか?」とワンクッションおくと安心です!
メッセージボックスをだして、キャンセルボタンが押された場合はマクロを実行せずに終了させましょう。

◆イメージ

画像1

[OK]ボタン押したら ➡ マクロ実行
[キャンセル]ボタン押したら ➡ マクロ実行せず終了

◆書くマクロ

画像3


<テキスト>----------------------------------------------------------------------
③Dim kakunin
②kakunin = MsgBox("ほんとに貼り付けてもいいですか?", vbOKCancel)
④If kakunin = vbCancel Then
 ⑤MsgBox "キャンセルします。"
 ④Exit Sub
④End If
①Range("A1").Copy Range("D1")
--------------------------------------------------------------------------------------

◆書く順番で解説

①Range("A1").Copy Range("D1")
→まずは、このコード。実際にやってほしいことがこのコードです。
A1セルの値をコピーしてD1セルに貼り付ける。

②kakunin = MsgBox("ほんとに貼り付けてもいいですか?", vbOKCancel)
→メッセージボックスで選択したボタンを変数(kakunin)に格納する書き方です
「OK」か「Cancel」かによって実行内容の場合分けをするため、変数(kakunin)に格納しておきます。

参考記事<5-メッセージボックスで選択させる(エクセルマクロ)
参考動画<【マクロルーティン17】メッセージボックスに2択のボタンを設置!

③Dim kakunin(kakuninは変数です。)
→今、変数を勝手につくったので変数宣言をしておきます。

②のコードを実行すると次の図のようなメッセージボックスが表示されます。

画像3

ここで[OK]を押したときは変数(kakunin)にOKを表す戻り値が返され、[キャンセル]を押したときは変数(kakunin)にキャンセルを表す戻り値が返されます。

★キャンセルが押された時にはマクロをこれ以降実行せず終了させたい。

④If kakunin = vbCancel Then(→kakuninがvbCancelなら)
 ④Exit Sub(→マクロ終了(subプロシージャー終了))
④End If

★Cancelを押したときの戻り値の値の定数はvbCancelと書きます。
★OKを押したときの戻り値の値の定数はvbOKと書きます。


◆親切コード

⑤MsgBox "キャンセルします。"
これは書かなくてもマクロの実行内容にはなんの影響もないコードですが、
Cancelボタンを押したときになにも反応がないと「あれ?マクロ急に止まったのかな?」と不安になってしまいます。
不安にならないようにメッセージボックスを表示させて、「マクロの実行はキャンセルされましたよ。」と教えてあげましょう。

これで完成です。

◆まとめ

★メッセージボックスで[OK]ボタンを押したときの動き
今回のコード---------------------------------------------------------------------
③Dim kakunin
②kakunin = MsgBox("ほんとに貼り付けてもいいですか?", vbOKCancel)
If kakunin = vbCancel Then
 ⑤MsgBox "キャンセルします。"
 ④Exit Sub
End If
①Range("A1").Copy Range("D1")
-------------------------------------------------------------------------------------
④If kakunin = vbCancel Then ⇦この条件が当てはまらないので、
④End If ⇦ここまでスキップしてきます。そして、
次のコード、、
①Range("A1").Copy Range("D1")
が実行されることによりコピペされます。

★同じようなコードをまねして書いて、徐々に慣れていきましょう!

◆参考動画

【マクロルーティン17】メッセージボックスに2択のボタンを設置!


この記事が気に入ったらサポートをしてみませんか?