こんにちは!かいけつマクロです。
前回は、第1講で作成したマクロが、どのような中身になっているかを見ていきました。
今回は、いよいよ、皆さん自身でExcelマクロを書いていく、つまり、プログラミングをしていくことになります。
![](https://kaiketsu-macro.com/wp-content/uploads/2021/05/boy_angry-150x150.png)
よっしゃー!やる気が出てきたぞー
という方もいらっしゃれば、
![](https://kaiketsu-macro.com/wp-content/uploads/2021/05/boy_cry-150x150.png)
えっ、もう?早すぎるよ
という方もいらっしゃるかもしれません。皆さん全員が、スッキリ理解できるように、丁寧に解説を進めていきますので、本日もぜひ最後まで見ていってください。それでは、張り切ってまいりましょう!
まずは、大事な大事な初期設定
それでは、まず、Excelを用意し、Excelの「開発」タブと、マクロを記録するための画面(VBE:Visual Basic Editorといいます)を開いてください。
![](https://kaiketsu-macro.com/wp-content/uploads/2021/05/boy_surprised-150x150.png)
あれ?どうやって開くんだったっけ?
という方は、前回の記事を参考にしてください(‘ω’)ノ
ちなみに、マクロのプログラミングでは、書いては実行し、書いては実行し、を何度も繰り返すので、画面の切替えが地味に大変です。なので、ちょっと大きなパソコンをお持ちだったり、モニタを2つお持ちだったりされる方は、こんな感じで、2つの画面が一気に見えるようにしておくのがおススメです。
![おススメの画面の開き方](https://kaiketsu-macro.com/wp-content/uploads/2021/05/pict_3_1-1024x384.png)
ここで、ちょっと、初期設定を行います。
![](https://kaiketsu-macro.com/wp-content/uploads/2021/05/boy_angry-150x150.png)
また、設定?!第1講の時もそうだったじゃん
と言われる気持ちはよくわかりますが、これをやっておくだけで、今後の効率が数十倍、いや、数百倍くらい出てくるので、ぜひ最初にちゃちゃっと済ませてしまいましょう。
VBEの上にあるタブから、「ツール→オプション」と選択してください。
![初期設定 手順1](https://kaiketsu-macro.com/wp-content/uploads/2021/05/pict_3_2.png)
そうしたら、こんな画面が出てくるはずです。ここで、この2つの項目を変更します。
- 自動構文チェック ※このチェックを外す
- 変数の宣言を強制する ※このチェックをつける
![初期設定 手順2](https://kaiketsu-macro.com/wp-content/uploads/2021/05/pict_3_3-1024x341.png)
変更ができたら、「OK」ボタンを押して、この画面を閉じてください。(この初期設定に何の意味があるかは、ここでは一旦、解説を省きますが、また、別のコラムなどで、上げるかもしれません(‘ω’)ノ)
プログラミングの第1歩 ”Hello! World!”
さて、大変お待たせしました。これで準備は完了です。早速プログラミングをはじめていきましょう。
プロシージャを定義する
VBEの上にあるタブから、「挿入→標準モジュール」と選択してください。
![標準モジュールを挿入](https://kaiketsu-macro.com/wp-content/uploads/2021/05/pict_3_4.png)
すると、こんな画面になったと思います。
![Module1のプログラミング画面](https://kaiketsu-macro.com/wp-content/uploads/2021/05/pict_3_5.png)
これは、前回の第2講でも出てきたので、全然怖くないですね!(上でやった初期設定の結果、「Option Explicit」というのが出ています。これの説明は、今回は割愛します。)
それでは、実際にプログラミングしていきます。
まずは、以下のように、すべて半角文字で入力してください。
![](https://kaiketsu-macro.com/wp-content/uploads/2021/05/pict_3_6.png)
できましたね。そしたら、、、勢いよく、「Enter」を押してください!!
![](https://kaiketsu-macro.com/wp-content/uploads/2021/05/headbutt-150x150.jpg)
ぅおーりゃーーー!!!
落ち着いてください。パソコンが壊れます。
・・・さて、画面のほうに戻ると、
![hello_worldプロシージャ](https://kaiketsu-macro.com/wp-content/uploads/2021/05/pict_3_7.png)
あれ?なにやら、皆さんが書いたものじゃない、別の何かが追加されてますね。
・・・そうなんです!それが、このVBEの凄いところ!VBEは、皆さんが入力したプログラムで、「本当はもう少し書かないと正しく動かないんだけどなー」というところを、
![](https://kaiketsu-macro.com/wp-content/uploads/2021/05/robot-150x150.png)
先回りして書いときやしたぜ!
という、超優秀なやつなんです!(このロボット、本当にこんなしゃべり方だろうか・・・)
さて、皆さんが書いた、こちらのプログラム。前回の第2講でも、似たようなのがありました。
![Module1_画面](https://kaiketsu-macro.com/wp-content/uploads/2021/05/pict_2_3-1.png)
前回との違いは、
- 「Sub」の後が、「Macro1()」から「hello_world()」に変わっている
- 間の行が、すっかり抜け落ちている
という点です。2点目は、第2講でも見てきた通り、具体的な処理やコメントが記載されているんでした。中身は、今回のブログの中で書いていきます。では、1点目は何でしょう?
マクロの世界では、「Sub」~「End Sub」までのひとまとまりのことを「プロシージャ」、「Sub」の後に書かれたものを「プロシージャ名」といいます。
つまり、今回は、「プロシージャ名」が異なっていたわけですが、この「プロシージャ名」は、(一定のルールはありますが、)皆さんが好きなようにつけることができます。
![](https://kaiketsu-macro.com/wp-content/uploads/2021/05/boy_angry-150x150.png)
その()でこっそり書いた、「一定のルールはありますが」
という部分、俺は見逃さないよ!
という方、さすがです。簡単にまとめると、こんなルールがあります。
- 使える文字は、英数字(半角)、英数字(全角)、漢字、アンダーバー(_)
- 全角スペース、半角スペースは使えない
- プロシージャ名の先頭に、数字とアンダーバーは使えない
- 長さは半角で255文字まで
- 使えない予約語がある
![](https://kaiketsu-macro.com/wp-content/uploads/2021/05/boy_surprised-150x150.png)
えっ、ルール多ない??
と思った方、その通り。多いんです。
なので、皆さんが今後、プロシージャ名をつけるときに困らないよう、私が命名方法を用意しました!慣れないうちは、必ずこの方法に従ってプロシージャ名をつけるようにしてみましょう。
- 処理の内容を、英語にする(みんな大好き、Google先生にお願いしましょう)
- 英語にした処理の内容を、単語ごとに分ける
- 単語が1つなら、プロシージャ名は、日本語(漢字やひらがな)の単語とする
- 単語が2つ以上なら、プロシージャ名は、英語とし、各単語はアンダーバーでつなげる
例えば、何かをコピーするためのプロシージャを作成する場合、
- 処理の内容は、「copy」
- 単語の数は、1つ
です。そのため、プロシージャ名は、そのまま「コピー」とします。
また、プロシージャ「コピー」を少し改良して、「コピーし、さらに、貼り付ける」という処理をできるようにする場合、
- 処理の内容は、「copy and paste」
- 単語の数は、3つ
です。そのため、プロシージャ名は、「copy_and_paste」とします。
![](https://kaiketsu-macro.com/wp-content/uploads/2021/05/boy_angry-150x150.png)
こんなの必要なの?めんどくさいじゃん!
と思われるかもしれません。それは、全くもってごもっともなのですが、「プロシージャ名のルール」にある「使えない予約語がある」というのが結構厄介なやつで、このルールに抵触しないように、こんな面倒なことをやってます。
皆さんが慣れてきたら、ぜひ、独自の「プロシージャ名」の命名ルールを考案してみてください(‘ω’)ノ
ちなみに、これは少し発展的な内容になりますが、他のプログラミング言語(Java、C、Python、等)に比べれば、「英数字(全角)」「漢字」が使えるという点で、かなり自由度が高いです。私が、このマクロを好きな理由の一つでもあります(*’ω’*)
処理の中身を書いていく
それでは、実際に処理の中身を書いてみましょう。
まずは、「Sub hello_world()」の次の行にカーソルを当てて、「Tab(タブ)」ボタンを押してください。
![カーソルを「Sub hello_world()」の下に当てる](https://kaiketsu-macro.com/wp-content/uploads/2021/05/pict_3_8-1024x370.png)
![「Tab(タブ)」ボタンの位置](https://kaiketsu-macro.com/wp-content/uploads/2021/05/pict_3_9-1024x405.png)
すると、ピコピコの点滅が、ほんの少し右にずれませんでしたか?
![カーソルの位置が、右にずれる](https://kaiketsu-macro.com/wp-content/uploads/2021/05/pict_3_10-1024x342.png)
この、カーソル(プログラムの書き始めの位置)を、右にずらすことを「インデント」と言います。
これも、第2講で出てきた「コメント」同様、やってもやらなくても影響ないシリーズなのですが、やっておくだけで、メチャメチャプログラミングの効率が上がるので、今後はぜひやるようにしましょう。
詳しいやり方を書き始めると、ブログが1本書けてしまうので、ここでは割愛し、実際にプログラミングをしながら、
![](https://kaiketsu-macro.com/wp-content/uploads/2021/05/boy_smile-150x150.png)
ふーん、こうやってやるのね
といった感じでつかんでもらえればと思います。
そうしたら、続いて、実際の処理の内容を書いていきます。以下のように、また、すべて半角文字で入力してください。
![「msgbox "Hello! World!"」と入力](https://kaiketsu-macro.com/wp-content/uploads/2021/05/pict_3_11.png)
できましたね。そしたら、、、勢いよく、「Enter」を。。。
![](https://kaiketsu-macro.com/wp-content/uploads/2021/05/profile-150x150.png)
ハイ、そこまで。やめときましょう
ということで、「Enter」を押してみると、こんな表示になると思います。
![「MsgBox "Hello! World!"」に書き換わった](https://kaiketsu-macro.com/wp-content/uploads/2021/05/pict_3_12.png)
ちょっとわかりにくいですが、「msgbox」→「MsgBox」に変わってますね。これも、VBEのおかげです。
![](https://kaiketsu-macro.com/wp-content/uploads/2021/05/robot-150x150.png)
イヤイヤ、それほどでもないでやんす
お疲れさまでした。これでプログラミングは終了です。次の章では、実際に、作成したプログラムを動かしてみましょう!
作成したExcelマクロを動かしてみよう!
さて、皆さんが作成したExcelマクロを、実際に動かしてみましょう!
動かし方は、超簡単。「MsgBox~」という行の、すぐ下にカーソルが当たっていると思うので、その状態で、上の「▶」を押してください。
!["Hello! World"を実行する](https://kaiketsu-macro.com/wp-content/uploads/2021/05/pict_3_13-1024x433.png)
、、、どうですか?こんな感じでポップアップが上がったら、おめでとうございます。大成功です!
!["Hello! World"の実行結果](https://kaiketsu-macro.com/wp-content/uploads/2021/05/pict_3_14-1024x716.png)
![](https://kaiketsu-macro.com/wp-content/uploads/2021/05/profile-150x150.png)
初めて自分でプログラミングしたものが、
うまく動いた時の感動は、ひとしおですね
もし、「うまく動かなかったよー」という方は、恐らく、タイプミスをしていると思われます。ここで止まってしまっては非常にもったいないので、こちらのコードをコピペして、もう一度、実行してみてください。(それでもうまくいかない場合は、恐れ入りますが、一番下のコメント欄、もしくは、TwitterのDMでお知らせください。)
Sub hello_world() MsgBox "Hello! World!" End Sub
初めてのプログラミングを終えて
今回作成したExcelマクロ、特に、「MsgBox」という命令は、「後ろに書いた文字列を、ポップアップで表示しなさい」という意味です。今回の場合でいうと、後ろに、「Hello! World!」という文字列を書いているので、それがそのままポップアップで表示されました。
この「MsgBox」、Excelマクロのプログラミングでは、結構よく出てくるので、やってるうちに自然に覚えてくると思います。
![](https://kaiketsu-macro.com/wp-content/uploads/2021/05/boy_sad-150x150.png)
こういうの覚えるの苦手なんだよなー
という方も、全然問題ないので、焦らずに、引き続き、学習を続けていきましょう!
- 「プロシージャ名」は、こちらのルールに従って命名する。
- 処理の内容を、英語にする(Google先生にお願いしましょう)
- 英語にした処理の内容を、単語ごとに分ける
- 単語が1つなら、プロシージャ名は、日本語(漢字やひらがな)の単語とする
- 単語が2つ以上なら、プロシージャ名は、英語とし、各単語はアンダーバーでつなげる
- 必ず、「インデント」を入れる
- 「MsgBox」は、「後ろに書いた文字列を、ポップアップで表示しなさい」という命令
今回もお疲れ様でした。次回以降も、ぜひ、読んで・実践していきましょう!
それでは!
コメント