VBAのDimステートメントとは?Dimステートメントの使い方
VBAに触れる際に、必ずといいっていいほど見かけるのが「Dim」という文字列です。ここでは、Dimの基本的な使い方について説明していきます。
目次
1.Dimステートメントについて
1-1.Dimステートメントとは
Dimステートメントは、変数の型や名前を宣言する際に使用します。「物の大きさ」や「範囲」といった意味を持つ「Dimension」が名前の元になっています。
1-2.Dimステートメントの使い方
Dim [変数名] ([配列の次元数]) as [データ型]
構文のパーツ | 必須/省略 | 説明 |
変数名 | 必須 | 変数の名前を設定 |
配列の次元数 | 省略可能 | 配列変数を定義する時にのみ設定 各次元の要素数を設定 |
データ型 | 省略可能 | 変数の型を設定 |
1-2-1.指定するデータ型の種類
変数の型は数多くあるため、使用頻度が高いものをあげていきます。これ以外にも、ユーザー自身が型を定義できる機能もあります。
データ型名 | 名称 | 値の範囲 |
Date | 日付型 | 西暦100年1月1日~西暦9999年12月31日 |
Long | 長整数型 | -2,147, 483,648~2,147, 483,647 |
Integer | 整数型 | -32,768~2,767 上記範囲を超えた値を使用したい場合はLong型を使う |
String | 文字列型 | 0~約20億バイト分の文字列 |
Double | 倍精度浮動小数点数型 | 負の値の範囲は -1.79769313486231E308 ~ -4.94065645841247E-324 正の値の範囲は 4.94065645841247E-324 ~ 1.79769313486232E308 |
Variant | バリアント型 | 最大で Double の範囲までの任意の数値 |
2.Dimステートメントの使用例
2-1.基本的な使用例
2-1-1.変数の宣言
Dim [変数名] as [データ型名]
宣言する名前は、日本語でも可能です
例)
Dim 件数 as String
2-1-2.配列の宣言
文字列の1次元配列の場合
例)
Dim [配列名](要素数 - 1) as [データ型名]
文字列の2次元配列の場合
例)
Dim [配列名](要素数1 - 1, 要素数2 - 1) as [データ型名]
※配列の次元数が「-1」をしているのは、配列の要素が「0」から始まるためです
2-2.特殊な書き方をする場合
2-2-1.変数の型を設定しない
型を設定しないで変数を宣言した場合、変数の型は「Variant」で定義されます
Sub sample1() Dim var1 var1 = 1 End Sub
型の確認
実行時に、ウォッチ内の型が「Variant/Empty」になっています(Emptyになっているのは、値が入っていないので型が未定のため)
変数に値(数字の「1」)が設定されると、「Variant/Integer」に変更される
2-2-2.複数の変数宣言を、1行で行う
変数の宣言は、1行で連続して行うこともできます
Sub sample2() Dim var1, var2, var3 As Integer var1 = "999" var2 = 999 var3 = 123 End Sub
実行時に、var1、var2のウォッチ内の型が「Variant/Empty」になっています(Emptyになっているのは、値が入っていないので型が未定のため)
Var1に文字列の「999」、var2に数字の「999」を設定されると、var1の型が「Variant/String」、var2の型が「Variant/Integer」に変更される。
2-3.自動型変換
宣言した変数のデータ型とは異なるデータ型を設定した場合、自動的に宣言した型に変換します。
※2-3-1.数字型の変数に、文字列の「123」を設定
Sub sample3() Dim cnt As Integer cnt = "123" End Sub
実行結果:数字の「123」が設定される
2-3-2.文字列型の変数に、数字の「123」を設定
Sub sample4() Dim cnt As String '文字列型で変数を定義 cnt = 123 '数字の「123」を設定 End Sub
実行結果:文字列の「123」が設定される
2-3-3.数値型の変数に、小数点ありの整数を設定
Sub sample5() Dim cnt As Integer '数値型で変数を定義 cnt = 123.24 '数字の「123.24」を設定 End Sub
実行結果:小数点なしの整数が設定される
2-3-4.整数型の変数に、数字以外の文字列「ABC」を設定
Sub sample6() Dim cnt As Integer '数値型で変数を定義 cnt = "ABC" '文字列の「ABC」を設定 End Sub
実行結果:変換できないパターンでは、「型が一致しません。」エラーになります。
2-4.その他の使用例
2-4-1.変数を宣言しないで使用
Sub sample7() Dim cnt As Integer '変数定義をコメント cnt1 = 123 '数字の「123」を設定 MsgBox "cnt = " & cnt End Sub
実行結果:定義していない変数(cnt)に値が設定されています。
定義をしていない変数でも、エラーにならずに正常に動作しています。定義した変数名を打ち間違えてVBAを作った場合、意図しない動きになってしまうので注意してください。
3.最後に
型の自動変換や未定義の変数が使用できる等、エラー原因にもなりそうな機能がありますが、うまく使いこなしてみてください。
コメント