【第3講】Excelマクロを実際に書いてみよう!

"Hello! World!"
スポンサーリンク

こんにちは!かいけつマクロです。

前回は、第1講で作成したマクロが、どのような中身になっているかを見ていきました。

今回は、いよいよ、皆さん自身でExcelマクロを書いていく、つまり、プログラミングをしていくことになります。

よっしゃー!やる気が出てきたぞー

という方もいらっしゃれば、

えっ、もう?早すぎるよ

という方もいらっしゃるかもしれません。皆さん全員が、スッキリ理解できるように、丁寧に解説を進めていきますので、本日もぜひ最後まで見ていってください。それでは、張り切ってまいりましょう!

スポンサーリンク

まずは、大事な大事な初期設定

それでは、まず、Excelを用意し、Excelの「開発」タブと、マクロを記録するための画面(VBE:Visual Basic Editorといいます)を開いてください。

あれ?どうやって開くんだったっけ?

という方は、前回の記事を参考にしてください(‘ω’)ノ

ちなみに、マクロのプログラミングでは、書いては実行し、書いては実行し、を何度も繰り返すので、画面の切替えが地味に大変です。なので、ちょっと大きなパソコンをお持ちだったり、モニタを2つお持ちだったりされる方は、こんな感じで、2つの画面が一気に見えるようにしておくのがおススメです。

おススメの画面の開き方

ここで、ちょっと、初期設定を行います。

また、設定?!第1講の時もそうだったじゃん

と言われる気持ちはよくわかりますが、これをやっておくだけで、今後の効率が数十倍、いや、数百倍くらい出てくるので、ぜひ最初にちゃちゃっと済ませてしまいましょう。

VBEの上にあるタブから、「ツール→オプション」と選択してください。

初期設定 手順1

そうしたら、こんな画面が出てくるはずです。ここで、この2つの項目を変更します。

  • 自動構文チェック ※このチェックを外す
  • 変数の宣言を強制する ※このチェックをつける
初期設定 手順2

変更ができたら、「OK」ボタンを押して、この画面を閉じてください。(この初期設定に何の意味があるかは、ここでは一旦、解説を省きますが、また、別のコラムなどで、上げるかもしれません(‘ω’)ノ)

プログラミングの第1歩 ”Hello! World!”

さて、大変お待たせしました。これで準備は完了です。早速プログラミングをはじめていきましょう。

プロシージャを定義する

VBEの上にあるタブから、「挿入→標準モジュール」と選択してください。

標準モジュールを挿入

すると、こんな画面になったと思います。

Module1のプログラミング画面

これは、前回の第2講でも出てきたので、全然怖くないですね!(上でやった初期設定の結果、「Option Explicit」というのが出ています。これの説明は、今回は割愛します。)

それでは、実際にプログラミングしていきます。

まずは、以下のように、すべて半角文字で入力してください。

できましたね。そしたら、、、勢いよく、「Enter」を押してください!!

ぅおーりゃーーー!!!

落ち着いてください。パソコンが壊れます。

・・・さて、画面のほうに戻ると、

hello_worldプロシージャ

あれ?なにやら、皆さんが書いたものじゃない、別の何かが追加されてますね。

・・・そうなんです!それが、このVBEの凄いところ!VBEは、皆さんが入力したプログラムで、「本当はもう少し書かないと正しく動かないんだけどなー」というところを、

先回りして書いときやしたぜ!

という、超優秀なやつなんです!(このロボット、本当にこんなしゃべり方だろうか・・・)

さて、皆さんが書いた、こちらのプログラム。前回の第2講でも、似たようなのがありました。

Module1_画面
第2講で作成したマクロ

前回との違いは、

  • 「Sub」の後が、「Macro1()」から「hello_world()」に変わっている
  • 間の行が、すっかり抜け落ちている

という点です。2点目は、第2講でも見てきた通り、具体的な処理やコメントが記載されているんでした。中身は、今回のブログの中で書いていきます。では、1点目は何でしょう?

マクロの世界では、「Sub」~「End Sub」までのひとまとまりのことを「プロシージャ」「Sub」の後に書かれたものを「プロシージャ名」といいます。

つまり、今回は、「プロシージャ名」が異なっていたわけですが、この「プロシージャ名」は、(一定のルールはありますが、)皆さんが好きなようにつけることができます。

その()でこっそり書いた、「一定のルールはありますが」

という部分、俺は見逃さないよ!

という方、さすがです。簡単にまとめると、こんなルールがあります。

プロシージャ名のルール
  • 使える文字は、英数字(半角)、英数字(全角)、漢字、アンダーバー(_)
  • 全角スペース、半角スペースは使えない
  • プロシージャ名の先頭に、数字とアンダーバーは使えない
  • 長さは半角で255文字まで
  • 使えない予約語がある

えっ、ルール多ない??

と思った方、その通り。多いんです。

なので、皆さんが今後、プロシージャ名をつけるときに困らないよう、私が命名方法を用意しました!慣れないうちは、必ずこの方法に従ってプロシージャ名をつけるようにしてみましょう。

かいけつマクロ的!プロシージャ名の命名方法
  • 処理の内容を、英語にする(みんな大好き、Google先生にお願いしましょう)
  • 英語にした処理の内容を、単語ごとに分ける
  • 単語が1つなら、プロシージャ名は、日本語(漢字やひらがな)の単語とする
  • 単語が2つ以上なら、プロシージャ名は、英語とし、各単語はアンダーバーでつなげる

例えば、何かをコピーするためのプロシージャを作成する場合、

  • 処理の内容は、「copy」
  • 単語の数は、1つ

です。そのため、プロシージャ名は、そのまま「コピー」とします。

また、プロシージャ「コピー」を少し改良して、「コピーし、さらに、貼り付ける」という処理をできるようにする場合、

  • 処理の内容は、「copy and paste」
  • 単語の数は、3つ

です。そのため、プロシージャ名は、「copy_and_paste」とします。

こんなの必要なの?めんどくさいじゃん!

と思われるかもしれません。それは、全くもってごもっともなのですが、「プロシージャ名のルール」にある「使えない予約語がある」というのが結構厄介なやつで、このルールに抵触しないように、こんな面倒なことをやってます。

皆さんが慣れてきたら、ぜひ、独自の「プロシージャ名」の命名ルールを考案してみてください(‘ω’)ノ

ちなみに、これは少し発展的な内容になりますが、他のプログラミング言語(Java、C、Python、等)に比べれば、「英数字(全角)」「漢字」が使えるという点で、かなり自由度が高いです。私が、このマクロを好きな理由の一つでもあります(*’ω’*)

処理の中身を書いていく

それでは、実際に処理の中身を書いてみましょう。

まずは、「Sub hello_world()」の次の行にカーソルを当てて、「Tab(タブ)」ボタンを押してください。

カーソルを「Sub hello_world()」の下に当てる
「Tab(タブ)」ボタンの位置

すると、ピコピコの点滅が、ほんの少し右にずれませんでしたか?

カーソルの位置が、右にずれる

この、カーソル(プログラムの書き始めの位置)を、右にずらすことを「インデント」と言います。

これも、第2講で出てきた「コメント」同様、やってもやらなくても影響ないシリーズなのですが、やっておくだけで、メチャメチャプログラミングの効率が上がるので、今後はぜひやるようにしましょう。

詳しいやり方を書き始めると、ブログが1本書けてしまうので、ここでは割愛し、実際にプログラミングをしながら、

ふーん、こうやってやるのね

といった感じでつかんでもらえればと思います。

そうしたら、続いて、実際の処理の内容を書いていきます。以下のように、また、すべて半角文字で入力してください。

「msgbox "Hello! World!"」と入力

できましたね。そしたら、、、勢いよく、「Enter」を。。。

ハイ、そこまで。やめときましょう

ということで、「Enter」を押してみると、こんな表示になると思います。

「MsgBox "Hello! World!"」に書き換わった

ちょっとわかりにくいですが、「msgbox」→「MsgBox」に変わってますね。これも、VBEのおかげです。

イヤイヤ、それほどでもないでやんす

お疲れさまでした。これでプログラミングは終了です。次の章では、実際に、作成したプログラムを動かしてみましょう!

作成したExcelマクロを動かしてみよう!

さて、皆さんが作成したExcelマクロを、実際に動かしてみましょう!

動かし方は、超簡単。「MsgBox~」という行の、すぐ下にカーソルが当たっていると思うので、その状態で、上の「▶」を押してください。

"Hello! World"を実行する

、、、どうですか?こんな感じでポップアップが上がったら、おめでとうございます。大成功です!

"Hello! World"の実行結果

初めて自分でプログラミングしたものが、

うまく動いた時の感動は、ひとしおですね

もし、「うまく動かなかったよー」という方は、恐らく、タイプミスをしていると思われます。ここで止まってしまっては非常にもったいないので、こちらのコードをコピペして、もう一度、実行してみてください。(それでもうまくいかない場合は、恐れ入りますが、一番下のコメント欄、もしくは、TwitterのDMでお知らせください。)

Sub hello_world()
    MsgBox "Hello! World!"
   
End Sub

初めてのプログラミングを終えて

今回作成したExcelマクロ、特に、「MsgBox」という命令は、「後ろに書いた文字列を、ポップアップで表示しなさい」という意味です。今回の場合でいうと、後ろに、「Hello! World!」という文字列を書いているので、それがそのままポップアップで表示されました。

この「MsgBox」、Excelマクロのプログラミングでは、結構よく出てくるので、やってるうちに自然に覚えてくると思います。

こういうの覚えるの苦手なんだよなー

という方も、全然問題ないので、焦らずに、引き続き、学習を続けていきましょう!

本日の学びポイント
  • プロシージャ名」は、こちらのルールに従って命名する。
かいけつマクロ的!プロシージャ名の命名方法
  • 処理の内容を、英語にする(Google先生にお願いしましょう)
  • 英語にした処理の内容を、単語ごとに分ける
  • 単語が1つなら、プロシージャ名は、日本語(漢字やひらがな)の単語とする
  • 単語が2つ以上なら、プロシージャ名は、英語とし、各単語はアンダーバーでつなげる
  • 必ず、「インデント」を入れる
  • 「MsgBox」は、「後ろに書いた文字列を、ポップアップで表示しなさい」という命令

今回もお疲れ様でした。次回以降も、ぜひ、読んで・実践していきましょう!

それでは!

コメント

タイトルとURLをコピーしました