複雑なプログラム作成には変数・定数・配列の知識が必須となります。
ここではそれぞれの概要を説明します。
変数
変数とはプログラム実行中に変化する値を一時的に格納しておくメモリ上の領域です。
値の代入と取得
変数に値を代入したり、変数から値を取得する場合は次のように記述しまう。
【変数に値を代入】
変数 = 代入する値
【変数の値を取得】
オブジェクト.プロパティ = 変数
代入する変数=変数
具体的には下記のような記述方法になります。
Sub Dainyu() '氏名にいろいろな敬称をつけてみよう Shimei = "山田太郎" MsgBox Shimei & "様" MsgBox Shimei & "さん" MsgBox Shimei & "殿" End Sub
MsgBoxは画面にメッセージボックスを表示する命令です。ここでは複数の氏名の表示を行っています。このように何度も使用する文字や数字は必ず変数を使用します。
変数の宣言
先ほどまではいきなり変数を記述しましたがこれに対してあらかじめ使用する変数を決めておくことができます。「変数の宣言」とはどのような変数をコード内で使用するかをあらかじめ設定しておくことをいいます。
変数の宣言はDimステートメントを使用します。変数の宣言はその変数を使用するプロシージャの先頭になります。また、モジュールにも変数の宣言ができます。
Sub Sengen() Dim Shimei Dim Keisho Shimei = "山田太郎" Keisho = "様" MsgBox Shimei & Keisho End Sub Sub Sengen2() Dim Shimei,Keisho Shimei = "山田太郎" Keisho = "様" MsgBox Shimei & Keisho End Sub
上記2つのプロシージャの実行結果は同じで「山田太郎様」と画面に表示されます。宣言方法は上記プロシージャのように1つずつ宣言する方法とカンマ区切りで一括で宣言する方法の2種類存在します。
変数の宣言を強制する
変数の宣言は宣言を行っても行わなくてもプログラムは正常に動作します。しかし、複雑なプログラムを開発する際は、変数の宣言を推奨します。
VBAでは宣言していない変数は使えないように変数の宣言を強制することができます。実務では必ずこの設定を行って下さい。
Sub Sengen() Dim Shimei Dim Keisho Shimei = "山田太郎" Keisho = "様" MsgBox Simei & Keisho 'Shimeiを誤ってsimeiと記述した!! End Sub
上記の場合は実行結果は「様」と画面に表示されます。このようなスペルミス等を防ぐ目的で変数の宣言の強制はほぼ必須と考えます。また、複数の担当者がコードをメンテナンスする場合も変数を強制することは有効です。
※VBEの[ツール]→[オプション]で[変数の宣言を強制する]チェックボックスをオンにします。
この設定を行うことでモジュール追加時に変数の宣言を強制を意味する「Option Explicit」ステートメントが自動設定されます。
データ型
データ型とは変数に代入される値の種類です。データ型はDimステートメントで変数を宣言するときに「As」キーワードを使って一緒に指定します。指定されたデータ型により扱うデータがや処理内容が変わるため正しいデータ型を指定する必要があります。例えば文字列を扱う型に数値を代入するとエラーが発生します。
変数のデータ型と格納できるデータは下表のとおりです。
型名 | 型指定文字(VBAの表記) | 格納できるデータ |
---|---|---|
文字列型 | String | 文字列 |
ブール型 | Boolean | True または False |
バイト型 | Byte | 0から255の正の整数 |
整数型 | Integer | -32,768から32,767の整数 |
長整数型 | Long | -2,147,483,648から2,147,483,647の整数 |
単精度浮動小数点型 | Single | -3.402823E38から-1.401298E-45 1.401298E-45から3.402823E38 |
倍精度浮動小数点型 | Double | -1.79769313486231E308から-4.94065645841247E-324 4.94065645841247E-324から1.79769313486232E308 |
通貨型 | Currency | -922,337,203,685,477.5808から922,337,203,685,477.5807 |
日付型 | Date | 西暦100年1月1日から西暦9999年12月31日 (日付と時刻) |
オブジェクト型 | Object | オブジェクト参照するデータ型 |
バリアント型 | Variant | あらゆる種類の値を保存できる型 |
具体的な記述方法は次の通りです。
Sub DetaGata() Dim Shimei As String Dim Keisho As String Shimei = "山田太郎" Keisho = "様" MsgBox Shimei & Keisho End Sub
※数値のデータ型指定について 数値は小数点以下の考慮や扱う範囲でデータ型を決定しますが下記データ型を中心に使用することをお勧めします。 整数の場合:長整数型 小数点以下を使用する場合:通貨型
定数
定数は変数とは違い固定された値を格納するものです。例えば文字列の場合は「Kg」「円」等の固定文字、数値の場合は消費税率や円周率等を扱います。
定数を宣言する場合はConstステートメントを使用します。定数は、宣言する際必ず値を代入します。
Sub Teisu() Const Zeiritsu As Currency = 0.1 Const Tani As String = "円" Dim Kingaku As Currency Kingaku = 100 MsgBox "消費税は" & Kingaku * Zeiritsu & Tani & "です。" End Sub
上記コードは「消費税は10円です。」と画面に表示されます。
配列
配列とは、配列を持った変数のことをいいます。配列に格納されている個々の値を要素と呼びます。配列は要素をを自由に操作するためにインデックス番号と呼ばれる番号を持っています。インデックス番号は特に指定しない場合は0から始まります。
配列は具体的に次のように指定します。
Sub Teisu() Dim Keisho(2) As String Keisho(0)= "山田太郎" Keisho(1)= "鈴木花子" Keisho(2)= "佐藤次郎" MsgBox Keisho(0) & Keisho(1) & Keisho(2) End Sub
※インデックス番号を1から開始したい場合は「Option Base 1」をモジュールの宣言セクションに指定します。
次は分岐処理【Access/Excel】です。
コメント