はじめてのプログラム(セル操作)
プログラム(処理手順)を処理の開始と終了がわかるようにプロシジャという単位で作ります。今回は標準モジュールというシートに作成します。何度も利用するプログラムを毎回記述する代わりに、プロシジャとしてまとめておきます。こうしておくと、必要な時にそのプロシジャを呼び出して利用できます。
同じプログラムを何度も記述する手間を省くことによって、記述ミスを少なくできます。また、プログラムを変更する場合、修正する箇所が少なくて済みます。
Visual Basicでは、プロシジャとして2種類あります。Sub(副)プロシジャとFunction(関数)プロシジャです。
・Subプロシジャは、Subステートメントと End Subステートメントで囲まれた一連の処理ステートメントの集まりです。
・Functionプロシジャは、Functionステートメントと End Functionステートメントで囲まれた一連の処理ステートメント(命令)の集まりで、Excelのワークシートで利用する関数と使い方が同じで、必要な値を求めるときにつかいます。
まず最初に標準モジュールを開きます。標準モジュールシートを追加するにはメニューバーから標準モジュールを選択してEnter キーを押すだけです。
そうしたら「Module1」という名で追加されます。2回目以降は「Module2」「Module3」・・・という名前で標準モジュールシートが追加されていきます。
では、Subプロシジャを使って、標準モジュールシートに初めてのプログラムを書いてみましょう。
次のサンプルプログラムに挑戦しましょう。
サンプルプログラム
- Sub サンプル01()
- MsgBox "初めてのプログラムに挑戦!"
- End Sub
記入後、実行するにはカーソルをSubプロシジャ内に置き、F5 キーを押します。
メッセージダイアログボックスが開き、スクリーンリーダーが「初めてのプログラムに挑戦!」と読んだら成功です。
ダイアログボックスが開かなかったら、記入ミスですので正しく入力されたかを確認して再度実行しましょう。エラー処理Tを参考にしてください。
上に書いてある方法が一番簡単な操作で実行することができますが、他には以下の方法があります。
- 1. ALT + F11 キーを押してワークシートに移動します。
- 2. Alt キーを押してリボンに移動します。
- 3. 左右方向 キーを押して「開発」タブを選択します。
- 4. Tab キーを押して「マクロ」を選択してEnter キーを押します。「マクロ」ダイアログ ボックスが開きます。
- 5. 「マクロ名」リスト ボックスから、サブプロシジャー名「サンプル01」)を選んでTab キーを押して「実行」ボタンを選択してEnter キーを押します。プログラムが実行します。
【ワンポイント】 「マクロ」ダイアログ ボックスは、Alt + F8 キーでも開きます。
少しだけプログラムらしいコードに挑戦
では、少しだけプログラムらしいコードに挑戦しましょう。
サンプルプログラム
- Sub サンプル02()
- Dim x as Integer
- Dim y as Integer
- Dim z as Integer
- x = 10
- y = 20
- z = x + y
- MsgBox "合計は" & z & "です。"
- End Sub
コメントの活用
VBAに限らず、作ったプログラムにコメント(注釈)をつけておくと、後で見返す時に大変役に立ちます。
VBAでは、シングルクォーテーション(')を記述した位置から行末までがコメントになります。
従って、行頭からでも、行の途中からでもコメントが可能です。
【ワンポイント1】 入力文字は半角英数が基本です。コメントを除き、プログラムは、全て半角文字で記入します。ただし、変数名や定数などは日本語で入力してもかまいません。
【ワンポイント2】 「Sub サンプル01()」と書き終えて改行すると、自動的に「End Sub」の行が現れます。このように、VBEの環境には様々な入力支援機能がついています。
どんな入力支援機能があるか知りたい方には「ツール」メニューの「オプション」の中の「編集」ダイアログ ボックスを表示して確認してください。
【ワンポイント3】 「サンプル02()」はプロシジャの名前であり、自分で決めてよいのでわかりやすい名前に心がけましょう。できれば後で理解しやすいように日本語がいいのですが入力に手間が掛かる難点はあります。
サンプル02プログラムの説明
変数x,yにそれぞれ10,20を代入して、その合計を変数zに代入して、メッセージボックスを表示するという簡単なプログラムです。
- 変数x,y,zは、値を入れる器です。変数名はわかりやすいように日本語で記述するとあとで読み返したときわかりやすいです。たとえば、数値(整数、小数)、文字、日付などを一時的に入れる器です。
- Dimは「変数をこれから定義しますよ」というステートメントです。asのあとは器の種類を書きます。
- Integerは整数を、Stringは文字列の器をメモリ上に確保します。
- ここでのイコール「=」はIF文の中で使用されているイコールと違って、右から左に値を代入するという意味です。x=10は変数xに値10を代入します。
- z=x+yは変数xと変数yの値を足して変数zに代入します。もちろんいろいろな四則演算は利用できます。
- 計算の優先順位は基本的には算数で習ったのと同じです。
- MsgBox文は、文字列をメッセージボックスに表示する命令です。
- ちなみにエクセルでもおなじみのアッパサンド「&」は文字と文字をつなぐ演算子です。この演算子は利用価値が高いので覚えておきましょう。