アナログCPU:5108843109

ゲームと音楽とプログラミング(酒と女とロックンロールのノリで)

ExcelVBA入門 #1:Hello VBA World!

練習問題:これが分かる・できる人は以降読まなくても大丈夫

  • 新しい標準モジュールを作れる
  • モジュールの名前を変えることができる
  • メッセージ表示のダイアログボックスを出すプログラムが書ける
  • 作ったプログラムを実行できる

はじめに

今回からはさっそくプログラミングに入ります。

新しいプログラミング言語を学ぶ際最初に作るものといえば「HelloWorld」です。
画面に「HelloWorld」と表示するだけのプログラムです。

Excelを開いてExcelVBEを開く

はい、開いてください。
「何言ってんだコイツ」と思った方は前回の記事をどうぞ。

新しいモジュールを作る

VBEの画面を開くと、どこかにこういうのが出てきたと思います。
f:id:honey8823:20150827123528p:plain
もし出てこなかった場合は、
 表示>プロジェクト エクスプローラ
で出してください。

このウインドウの中で右クリックをして、
 挿入>標準モジュール
を選択してください。
すると、新しいウインドウ(テキストエディタみたいなもの)が現れ、
さっきのウインドウには「標準モジュール」というフォルダと、
その中に「Module1」が作成されているはずです。
新しく現れたエディタが「Module1」を編集することができる画面です。

モジュールの名前を変更する

さて、今見ているVBE画面の中に、「プロパティ」というウインドウはありますでしょうか。
なければ、
 表示>プロパティウインドウ
を選択して出してみてください。

このプロパティウインドウでは、モジュールの名前を変更することができます。
「全体」タブのオブジェクト名を書き変えればOK。

変更したところで特別な効果があるわけではありませんが、名前を変更しないというのはこういうことです↓

「えーマジModule1?」\キモーイ/
「Module1が許されるのはサンプルプログラムまでだよね!」\キャハハハハハハ/

…いや、今回はサンプルプログラムなんですけどね。
「Module1」というのは「新規テキストファイル.txt」や「Book1.xlsx」みたいなもんですし、積極的にそれなりの名前を設定していきましょう。
複雑なコードを書き始めると、モジュール名自体をコードに書く場合もありますのでね。

これに限らず、プログラミングをしているといろんなものに名前をつける機会が多数ありますが、基本的に、英語で、意味の分かるものをつけましょう…。
これもモジュール名と同じく自由といえば自由なんですが、
デフォルト名のままだの日本語名だのは、あんまり人に見せるもんじゃないですし、とても読みにくいコードになります。

プログラムを書く

さて、いよいよプログラムを書きます。
さっき出てきた、テキストエディタっぽいウインドウ(以下、エディタ)を見てください。
一番上に、

Option Explicit

と表示されていると思います。
「何言ってんだコイツ」と思った方は前回の記事をどうぞ。
これは前回書いた

VBEのメニューバーから
 ツール>オプション
で、オプション画面が表示されます。

まずは、編集タブで
「変数の宣言を強制する」にチェックを入れておいてください。
ちょっとしたおまじないなのですが、その効果の話はまた次回。

これです。
この設定をしておくと、新しいモジュールを作ったときに自動で挿入されるようになるのです。

で、これは何かというと、

<ある程度プログラミングわかってる人向け>
VBAは本来は変数宣言をしなくても動くのですが、
これを入れておくと、宣言がないときにエラーを出してくれるようになります。

<プログラミングはじめての人向け>
このおまじないをしておくと、
なんか間違ってるときにPCが教えてくれるようになります。
けしちゃだめだよ。

…という感じです。
おまじないをしなくても、これをコピペで一番上に貼りつけておくだけでもとりあえずOKです。
逆に、おまじないをしてあってもこれを消したら意味がありません。

さて、その「Option Explicit」の下に、次のコードを入力してください。
コピペでもいいです。

Public Sub main()
    MsgBox ("Hello VBA World!!")
End Sub

さて、ここで保存してください。
保存してください。
大事なことなので2回言いました。
実行する前は必ず保存する癖をつけましょう。
これだけのコードならまだともかく、
長々と書いたあと実行してみるとエラーで固まって強制終了、
なんてことになったときは死にたくなります(実話)

さて、保存する際ですが、普通の拡張子で保存するとせっかく作ったマクロが動きません。
マクロを有効にするための拡張子があるので、そちらを選んで保存してください。
f:id:honey8823:20150828151925p:plain
(Excel2003以前であれば通常通りでOKです)

動かしてみる

書いたコードを動かしてみましょう。
次のいずれかの方法で、さっき書いたコードが動きます。

方法1:VBEの画面から動かす

VBEの画面で、メニューから
 実行>Sub/ユーザー フォームの実行
を押下
もしくは、F5を押す
もしくは、メニューバーから緑色の三角を見つけて押す

どの場合も、さっき書いた3行の中のどこかにカーソルがあれば、
すぐに実行されます。
別のところにカーソルがある場合、何を実行するか選ぶ画面が出てきますので、「main」を選んで実行してください。

方法2:Excelの画面から動かす

Excelの画面に戻り、
 開発>マクロ
を押下
もしくは、Alt+F8を押す
何を実行するか選ぶ画面が出てきますので、「main」を選んで実行してください。
f:id:honey8823:20150827130259p:plain
出てきましたか?

もし動かなかった場合は、

  • スペルを間違えてないか?
  • 全角スペースが混じってないか?(スペースを入れるときは半角かタブを使う)

を確認してみてください。

これでとりあえずプログラムを作ってみることはできました!

画像でまとめ

f:id:honey8823:20150827130505p:plain

次回予告

ExcelVBA入門 #2:Hello VBA World!! - アナログCPU:5108843109
ダイアログボックス出すだけならExcelじゃなくてもいいので、今度こそExcelを使ったプログラムを書いてみましょう。