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