定数と変数
定数は、定義した文字(定数)に不変な値を保管する入れ物です。
逆に変数は、定義した文字(変数)に可変する色々な値を一時的に保管する入れ物です。
▽ 定数の定義方法
定数は [ Const 定義した文字 [As 型] = (不変な)値 ] で設定します。([As 型]は省略可能)
値は、数値であればダブルクォーテーションは不要ですが、文字列であればダブルクォーテーションで囲む("値")必要があります。
Const cnstAbsoluteZero [As Integer] = -273 '定数:絶対零度
Const cnstYen [As String] = "円" '定数:円
Const cnstYen [As String] = "円" '定数:円
▽ 変数の定義方法
変数は [ Dim 定義した文字 As 型 ] で設定します。
定義した文字は、A, B, C とカンマ区切りで複数定義する事ができます。
Dim intX, intY As Integer '数値X, 数値Y
Dim strUserID As String 'ユーザーID
Dim strUserID As String 'ユーザーID
定数は不変な値が入るので宣言と同時に値をセットしますが、変数の場合、どんな値が入るのか(型)が重要となりますので宣言と同時に型をセットします。
簡単なプログラムを書いていると、使っている定義が定数なのか変数なのか?、変数でも型は何か?混乱する事は無いかもしれませんが、複雑で、複数人が共同で開発する場合、今後、メンテナンスが必要な場合は、プログラムを分かりやすく書く事が求められます。
管理人の場合、変数の定義の一部に型を記載するようにしています。上記のように string型であれば、変数定義の先頭に str~、int型であれば、変数定義の先頭に int~ と記載します。
このようにする事で「strUserID は文字列用の変数だから数字・文字混在に扱っても構わない」「intXは整数用の変数だから-32,768~32,767の整数だけしか扱えない」と瞬時に判断ができます。
プログラム開発をしている際は変数によるトラブルは少ないですが、何年も運用をしていると、特に数値に関わる変数でオーバーフローを起こして障害になるケースがあります。(例.通貨のインフレ等により桁数オーバー)
他人でも読めるプログラムを書きましょう。
変数の型の主な種類
VBa(Excelマクロ)で使える型は下記表の通りです。
型 | 範囲 |
---|---|
String | 文字列 |
Byte(バイト型) | 0 ~ 255 |
Boolean | True / False |
Integer | -32,768 〜 32,767 |
Long (長整数) | -2,147, 483,648 〜 2,147, 483,647 |
LongLong (LongLong 整数) |
-9,223,372,036,854,775,808 〜 9,223,372,036,854,775,807 (64 ビット プラットフォームでのみ有効) |
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 |
Decimal | (小数点がない) +/-79,228,162,514,264,337,593,543,950,335 (小数点以下が 28桁) +/-7.9228162514264337593543950335 (ゼロではない最小の値) +/-0.0000000000000000000000000001 |
Date(日付) | 100 年 1 月 1 日 ~ 9999 年 12 月 31 日 |
Object(オブジェクト) | 各種データ(オブジェクト)型 |
Variant(バリアント型) | オールマイティ |