見出し画像

つかえるExcelマクロ[マクロルーティン#13](指定のExcelファイルへのコピペ)メッセージボックス

この記事はマクロルーティン#13(指定のExcelファイルへのコピペ)で書いたマクロを親切なつかえるマクロにする方法です。

◆マクロの動作イメージ

画像1

[マスタファイル]のシート名「1週目」のデータを
[作業ファイル]のシート名「今週」にコピー&ペーストする

マクロルーティン#13(指定のExcelファイルへのコピペ)で書いたマクロが次の図のコード、たった1行です。

◆マクロ

画像2

<テキスト>
Workbooks("マスタファイル.xlsm").Worksheets("1週目").Range("B2:C8").Copy Workbooks("作業ファイル.xlsm").Worksheets("今週").Range("B2:C8")

★このマクロを書くファイルは[マスタファイル]でも[作業ファイル]でも、別のファイルでも大丈夫です。
(コードの中でファイル名を指定しているので大丈夫なのです。)

★マクロを書く場所は<マクロルーティン#0(基本手順)>をご覧ください。

◆このマクロに隠されている前提条件!

実は、このマクロを実行させるには[マスタファイル]も[作業ファイル]も両方開いていないといけません。どちらか1ファイルでも閉じているとエラーで止まってしまいます。
なぜかというと、ファイル名を指定しているからです。ファイル名を指定するからにはそのファイルは開いていないと選択できないですよね。
ということで、
「ファイルは開いてますか」とメッセージでお知らせすることにしましょう!

◆「ファイルは開いてますか」”Yes” なら実行する!

画像3

★上の図、黄色の4行を追加で書けばOKです。

◆解説

<テキスト>
②Dim oshirase As String
①oshirase = MsgBox("マスタファイル と 作業ファイル開いてますか。", vbYesNo)
③If oshirase = vbYes Then
Workbooks("マスタファイル.xlsm").Worksheets("1週目").Range("B2:C8").C~
③End If
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

oshirase = MsgBox("マスタファイル と 作業ファイル開いてますか。", vbYesNo)
まず、太字の部分は[Yes]と[No]を選択させるメッセージボックスを表示させる部分です。

oshirase = MsgBox ( " メッセージ " , vbYesNo 
このように書くと次の図のように表示されます。

画像4

このようなウィンドウで[はい]をクリックすると
oshiraseに「”はい” が選ばれました!」という内容が入ります。
oshirase」は今、勝手に作った変数なので「これは変数ですよ。」とマクロ側に伝えておきます。
②Dim oshirase As String ←oshiraseは変数でString ( 文字列型 ) ですよ。
★これはとりあえずこのまま覚えておけば大丈夫です。
oshirase文字を入れる変数だからString」程度でOKです。


◆[はい]を選択したら実行する!

oshiraseに「”はい” が選ばれました!」または「”いいえ” が選ばれました!」という内容が入ることを利用して、③のコードを書くのです。

③If oshirase = vbYes Then → もしoshirase が「はい」なら
  Workbooks("マスタファイル.xlsm").Worksheets("1週目").Range("B2:C8"~
③End If

「はい」をクリックしたら ➡ oshirase = vbYes
「いいえ」をクリックしたら ➡ oshirase = vbNo

★これで、「はい」をクリックしたらすぐ下に書かれてあるコードを実行します。「いいえ」をクリックしたら③の If文 に当てはまらないので③End Ifにスキップします。


◆まとめ

自分で作ったマクロは自分だけが使う場合、エラーがでても、なぜエラーがでたのか予想できます。他の人がマクロを実行してエラーが出るとイヤな気持ちになります。
自分以外の人が使う可能性があるマクロの場合は今回ご紹介したようなコードを書くことでマクロが止まってしまうことを防げます。
また、自分でもマクロの内容を忘れてしまうことがありますので、自分のためにも書いておいたほうがいいですね。


◆関連動画


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