ド素人でも学べる ExcelVBA 002

ブログ

簡単なプログラムを書きながらVBEにも慣れていこう

 さて、今回はプログラムを書いていく。
 前回も言った通りプログラムは、VBE(ビジュアル ベーシック エディター)を開いてモジュールに書いていく。
 (「モジュール」って何だっけ?という人は前回の記事を参照して頂きたい。)

短いプログラムを書いて実行する

 ではVBEを使ってみよう。VBEの画面説明をしてきたが手順としては、

1.プロジェクトウインドウでモジュールを選択
2.コードウインドウにプログラムを書く
3.実行して正常に動くか確認する
4.不具合がないか確認して修正する
5.完成(保存)

 という手順を繰返してプログラムを完成させる。
 (今のところプロパティウインドウの出番はない。)

 最初のステップから進めていこう。

1.プロジェクトウインドウでモジュールを選択

 プロジェクトウインドウで右クリックして、「挿入」から「標準モジュール」を選択する。すると Module1 が追加される。

 追加出来たら、プロジェクトウインドウ内の Module1 をクリックして選択。
 すると、コードウインドウに Module1 が表示される。

 全画面表示だとわかりずらいが、「ウインドウを元のサイズに戻す」ボタンを押せば ウインドウが Module1 だと確認できる。
 (全画面の方が使いやすいので、確認出来たら [最大化]ボタンで、全画面表示に戻しておこう。)

2.コードウインドウにプログラムを書く

 次にコードを書いていく。入力は全て半角でスペースも含めて以下のように記述して欲しい。
 最後は「Enter」キー。
 
 sub test[Enter]
 
 すると以下のように勝手に必要なコードが追加される。
 これが自動補完機能で、プログラマーの労力を軽減すると同時に誤った記述を防止してくれる素敵な機能だ。

Sub test()

End Sub

 では、このコードが何を表しているか説明しよう。
 まず、Sub End Sub に注目して欲しい。VBAでは、Sub ~ End Sub までを1つのプログラムの単位としている。
 つまり、プログラムの最初と最後を示している。真ん中に空行があるのは、これからここにプログラムを書いていくわけだ。
 
 Sub ~ End Sub までは1つの単位だから、実行すると最後まで止まらずにプログラムは進んで行く。
 この単位の事を「プロシージャ」とか「関数」という言い方をする。
 
 次の test はプログラムの名前(プロシージャ名)になる。名前は何でも良いが、数字で始まったり、VBAが固有のキーワードとして使っている用語は使えない決まりがある。日本語を使っても構わない。
 プログラム名は、そのプログラムが何を行うものなのかを明示するような名前を付けるようにしよう。
 それと、同じプロジェクト内(同じブック内)で同じプロシージャ名は使えない。

 よく見ると test の後に () が付いている。これは「引数」を書く場所になる。
 引数(ひきすう)」とは、そのプログラムに値を渡したい場合に使う。引数は無くても構わないので、今回はそのまま先に進めていこう。
 (もちろん、必要になったら解説する。)
 
 このままでは、何もしないプロシージャなので、実行しても何も起こらない。
 何かプログラムを書いてみよう。

 プログラミングの初心者が最初に作るプログラムとして有名なのが、
 Hello world と表示させるプログラムだ。(C言語に由来する。)
 
 VBAでも、もちろん文字列を表示させることができる。
 以下のように真似して書いてみよう。

Sub test()
    MsgBox "Hello world"
End Sub

 MsgBox は、小文字で書いても後で自動変換される。
 その後は空白を置いて、“Hello world” と書く。
 
 MsgBox の前には空白があるが、これは Tabキーで間隔を取っている。
 この間隔は、「字下げ」という方法で、プログラムの流れを見やすくするための手法だ。
 VBAでは字下げをしなくても良い仕様になっているが、是非とも字下げの習慣を身に付けて欲しい。
 字下げは、するとしないとでは見やすさが格段に違ってくる。見やすくなる事でミスに気付きやすくする効果も期待できるのだ。
 
 どのように字下げをしたら良いかは、筆者のサンプルを真似していけばOKだ。
ここまでで、以下のようになっているはずだ。

3.実行して正常に動くか確認する

 では早速実行してみよう。
 自分で書いたプロシージャを実行するには、いくつか方法がある。

プログラムを実行する方法

 プログラムを実行するためには、まず実行したいプロシージャの内部にカーソルを置く必要がある。
 範囲としては以下の部分だ。

 準備ができたら以下のいずれかの方法で実行できる。
 ・メニューにある三角ボタンを押す
 ・F5キーを押す
 ・メニューの「実行」から「Sub/ユーザーフォームの実行

 (自分の好みの方法でOKだ。)

 成功すると、以下のようなメッセージボックスが表示される。

4.不具合がないか確認して修正する

 メッセージボックスが表示されない場合や、表示されてもメッセージが間違っている場合は以下の点を確認してみよう。

 ・プログラムのスペルミス
 ・プロシージャの範囲内にカーソルを置かずに実行した
 ・実行の仕方を間違えた(実行ボタン以外を間違って押した等)

【余談】 ミスはスキルの元
 ミスした事で「自分には才能がない」という風に考えないでもらいたい。
 ミスの修正作業で他の人より遠回りしたように感じるかもしれないが、実はその修正作業は貴重な体験だと捉えた方が良い。

 これは仕事などでもそうだと思うが、失敗した事でスキルアップしていくという事は多いはずだ。

 失敗は悔しかったり、恥ずかしかったりするが、内容を分析して修正すれば正しい事と間違っている事の両面から物事を見る事ができるようになる。
 正しい事ばかりを覚えても間違いやミスに気付けない事は多い。
 ミスはむしろスキルを磨けるチャンスととらえて真剣に向き合って欲しい。

5.完成(保存)

 問題なければ、完成となる。
 最後に、ブック(Excelファイル)を保存しておこう。ブックは、マクロ有効形式(.xlsm)で保存しないといけない。
 標準のブック形式(.xlsx)で保存してしまうと VBA 部分は消えてしまうので注意しよう。

まとめ

 今回やったポイントをまとめておく。

 ・Sub ~ End Sub までがプロシージャというプログラムの単位
 ・プロシージャ名は自由に決められるがルールがある
 ・引数は、プロシージャに渡す変数を置くが、無くても良い
 ・プログラムを書くときは「字下げ」を推奨する
 ・プロシージャの実行は、範囲内にカーソルを置いて行う。(F5キーなど)
 ・ブックの保存は、マクロ有効形式(.xlsm)で保存する

  今回は、非常に短いプログラムにも関わらず手取り足取りで説明してみた。
 ただし、一回できたからと言って安心しないで、ブックを開いてからプログラムを保存するまでの一連の作業をスラスラと出来るようになるまで練習しておいてほしい。

  • Excelを開く
  • VBEを起動する
  • 標準モジュールを追加する
  • プロシージャを書く(Sub ~ End Sub まで)
  • プログラムを書く(MsgBox “Hello world”
  • プログラムを実行する(カーソルを置いてF5キー)
  • 正常に動くか確認する
  • マクロ有効ブック(xlsm)で保存する

 ちなみに、筆者の場合、およそ1分で完了できた。(もちろんプログラムが短いからだが,,,)
 初心者の方でも、このくらいのタイムを目標にしてVBEの練習をしてみてほしい。タイムが短くなるほど慣れてきたと感じる事ができると思う。


 
 記事の内容に不明な点がある。とかプログラムが動かないなどの質問は、こちらからどうぞ。
 

コメント

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