5)変数と定数
Excel VBA ベーシック出題範囲
1.マクロの概念 2.マクロ記録 3.モジュールとシジャー 4.VBAの構文 5.変数と定数 6.セルの操作 7.ステートメント 8.関数 9.ブックとシート操作 マクロの実行
5-1)変数とは
変数とは
値や文字列やオブジェクトを一時的に記憶しておく名前付きのメモリ領域です
変数名
変数には名前を付ける事ができますこれを変数名と言います
変数の宣言
変数を、どの様に使うか決めて置くことを変数の宣言と言います。
型
変数の中に、どの様に値を記憶するか。記憶方法を型と言います。
暗黙の宣言
変数に値を入れる時に、値の型に合わせて自動的に宣言(バリアント型)されます。
これを暗黙の宣言と言います。
5-2)変数の宣言
変数は、プログラム内で値を格納するための名前付きのメモリ領域です。変数を使用する前に宣言する必要があります。
変数宣言の基本構文
Dim 変数名 As 型
5-2)変数の宣言
データ型 | 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 | あらゆる種類の値を保存できる型 |
ユーザー定義型 | — | ユーザー定義の型 |
5-3)変数に代入(変数に値を入れる)
変数に入れる文字や数値を値(あたい)と言います。
変数に値を入れる事を、代入、又は、格納すると言います。
代入演算子「=」(イコール)を使うと代入する事ができます。
代入文の基本構文
値の代入
変数 = 式 (値又は式)
オブジェクトの代入
set 変数 = (new) オブジェクト
Sub Assignment() ' 整数を代入 Dim a As Integer a = 100 a = a + 1 Debug.Print a ‘結果 101 ' 文字列を代入 Dim c As String c = "山田" c = c & "太郎" Debug.Print c ‘結果 山田太郎 End Sub
5-3-1)変数を使用する
変数の値は、他の変数に代入する事ができます。
代入しても代入元の値が失われる事はありません
Sub formula() ' a の値は変わらない Dim a, b As Integer a = 100 b = a + 200 Debug.Print a ‘結果 100 Debug.Print b ‘結果 300 End Sub
5-4)変数の名前規約
英数字、ひらがな、カタカナ、漢字、「_」 アンダーバーが使えます。
名前には、制御文字を使用することはできません。
スペース、ピリオド (.)、感嘆符 (!)、@、 &、 $、#
先頭に数字は使えません。
変数名の長さは、255文字までです
ステートメントで使用される「予約語」は使用できません。
大文字と小文字は区別されます。
(同一スペルはVBEで補正されます。)
可読性や保守性を高めるためのルール
これらのルールはコードの可読性や保守性を高めるために役立ちます。
変数名の命名規則
複数の単語を組み合わせる場合は、キャメルケース(camelCase)を使用するのが一般的です
例: myVariableName
プレフィックスの使用
特定の種類の変数を識別するために、プレフィックスを使用することが推奨される場合があります。
例:intCounter(整数型)、strName(文字列型)などです。
意味のある名前を使用する
変数名はその用途や役割を反映するようにすると、他の人がコードを理解しやすくなります。
例 rowCount(行数)、totalAmount(合計金額)などです。
よく使う変数名
よく使う変数は、単純な変数名にするとコードが簡略化されます
変数名 | 主な意味 | 起源 |
cnt | 何かコントーロールする | Count |
flag | オン・オフを切り替える | Flag |
i | 繰り返しのカウンター | integer |
temp | 一時的な使用 | temporary |
buf | 中間処理時にデータを積み上げる | buffer |
rc,re,res | 関数やオブジェクトの戻り値 | Return |
n | 一時的な数値 | Number |
s,str | 一時的な文字 | String |
変数宣言の強制
BASICの文法上、宣言しなくてもバリアント型に型が決まるので、型宣言しなくてもプログラミングは可能です。
モジュールの先頭で変数宣言の強制を宣言できます
Option Explicit ‘変数宣言を強制する
DefInt I-K ‘i ~ k で始まる変数は整数にする DefStr Q-U ‘q ~ u で始まる変数は文字にする
VBE→ツール→オプションで、変数宣言は強制が可能です。
5-5)変数の適用範囲
変数は宣言する場所によって有効範囲があります。
この範囲を変数の有効範囲(スコープ)と言います。
変数のスコープ
変数のスコープを明確にするために、可能な限り最も狭いスコープで変数を宣言することが推奨されます。 これにより、変数が不必要に長く生存することを防ぎ、バグの発生を減らすことができます
ローカル変数
プロシジャー内で宣言された変数をローカル変数といい、プロシジャーの中のみ有効です。
同じ変数名であっても、別の変数として使われます。 プロシジャーの使用が終わると変数はクリアされます。
モジュール変数
モジュールの先頭で宣言された変数をモジュール変数といい、モジュール内で有効です。
モジュール内のプロシジャー全てアクセス可能です
Public(パブリック)/ Private(プライーベート)キーワード
変数宣言の先頭に Public をつけると、モジュール間でアクセスが可能です。
モジュール内のみ有効にするには、Pribate を付けます。
5-5-2)変数の初期化と代入
変数を宣言した後、その変数に値を代入することができます
Dim myNumber As Integer myNumber = 10 Dim myText As String myText = "Hello, VBA!"
5-5-3)変数の有効期限
ローカル変数で宣言した変数は、プロシジャーが終了した時点でメモリが解放されます。
モジュール変数、パブリック変数は、 End ステートメントが実行されると、メモリが解放されます。
End ステートメントは、全てのプログラムを終了させるステートメントです。
5-6)定数とは
定数を宣言すると、値にわかりやすい名前を割り当てることができます。 定数を宣言し、その値を設定するには、 Const ステートメントを使用します。 定数を宣言した後に変更したり新しい値を割り当てたりすることはできません。
コンパイラ定数
VBAの文法の中で、標準的に割り当てられた定数
ユーザー定義定数
ユーザーが自分で定義する事ができます。
5-6-1) VBAの主なコンパイラ定数
VBA(Visual Basic for Applications)では、様々な定数が用意されています。
これらの定数はプログラミングの際に便利であり、コードの読みやすさや保守性を向上させます。
以下は、VBAの主な定数をいくつか紹介します。
主なコンパイラ定数
5-1-2)ユーザー定義定数
ユーザーが独自で定数を定義する時は、Const ステートメントを使います
定数定義の基本構文
Const 定数名 as 型 = 値
‘定数の宣言 ‘Const: 定数を宣言します。 Const constantName As DataType = value ‘定数の例 Const Pi As Double = 3.14159 Const Greeting As String = "Hello, World!" Const DaysInWeek As Integer = 7
5-6-2)定数のスコープ
定数のスコープは、変数と同様に宣言された場所によって異なります。
プロシージャ内、またはモジュールの上部にある [宣言] セクションで定数を宣言できます。
モジュール レベルの 定数は、既定ではプライベートです。
パブリック モジュール レベルの定数を宣言するには、 Const ステートメントの前に Publicキーワードを指定します。
Const ステートメントの 前に Private キーワードを付けてプライベート定数を明示的に宣言すると、コードの読み取りと解釈が容易になります。
5-7)定数のスコープ
ローカル定数
プロシージャ内で宣言され、そのプロシージャ内でのみ有効です。
Sub MyProcedure() ‘プロシジャー内のローカル定数 Const localConstant As String = "Local" MsgBox localConstant End Sub
モジュール定数
モジュール内で宣言され、そのモジュール内でのみ有効です。
‘Module1 ‘モジュール内の定数 Const moduleConstant As String = “Module" Sub MyProcedure() MsgBox moduleConstant End Sub
Publicキーワード
モジュール レベルの定数を宣言するには、 Const ステートメントの前に Publicキーワードを指定します。
‘Module1 ‘全てのモジュール共有の定数 Public Const MAIN_MODULE_NAME As String = "Module4“ ‘ローカルモジュール内の定数 Private Const MY_MODULE_NAME As String = "Module1“ Sub MyProcedure() MsgBox moduleConstant End Sub