このページでわかること(結論)
データ型の確認方法を3つ照会します。
それぞれの使い方が分かります。
- ローカルウインドウ(手軽、おすすめ)
- TypeName関数
- VarType関数
覚えること
- VBE→表示タブ→ローカルウインドウでローカルウインドウを表示させる
- ローカルウインドウの見方を覚える
- TypeName関数の使用方法(ローカルウインドウを使わない方法)
- VarType関数の使用方法(ローカルウインドウを使わない方法)
ローカルウインドウ
おそらく最も効率よく確認できる方法です。
以下のようなコードを書いてみます。
Sub test()
Dim ws As Worksheet
Set ws = ActiveSheet
Dim i As Long
For i = 1 To 500
ws.Cells(i, 1).Value = i
ws.Cells(i, 2).Value = "test"
ws.Cells(i, 3).Value = "2021/05/06"
Next
Dim maxRow As Long
Dim test1, test2, test3 As Variant
maxRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
Stop
test1 = ws.Cells(maxRow, 1).Value
test2 = ws.Cells(maxRow, 2).Value
test3 = ws.Cells(maxRow, 3).Value
End Sub
確認したいところにSTOPコードを入れておきます。
すると、マクロ実行(F5キー)しても一時停止しますので、
ステップイン(F8キー)で進めていくと、
ローカルウインドウに値と型が表示されます。
ステップインで最後まで進めてみます。
データ型を確認することができました。
多くの変数を同時に確認する必要があるときや、
変数の変化を確認する必要があるときは
効率的に仕事できます。
TypeName関数
構文:TypeName (値)
戻り値は文字列でデータの型を返してくれます。
変数だけでなく、
オブジェクト(ワークシートとかワークブックとか)の型も確認できます。
変数
文字列 | 内容 |
Integer | 整数型 |
Long | 長整数 |
Single | 単精度浮動小数点型 |
Double | 倍精度浮動小数点型 |
Date | 日付型 |
String | 文字列型 |
Boolean | ブール型 |
Error | エラー型 |
Empty | Variant型の初期値 |
Null | 無効な値 |
オブジェクト
文字列 | 内容 |
Workbook | ブック |
Worksheet | ワークシート |
Range | セル |
Chart | グラフ |
TextBox | テキストボックス |
ComboBox | コンボボックス |
ListBox | リストボックス |
Object | オブジェクト |
Unknown | 種類不明 |
Nothing | オブジェクトの初期値 |
先ほどのモジュールにTypeName関数を足してみました。
イミディエイトウインドウで確認してみます。
Sub test()
Dim ws As Worksheet
Set ws = ActiveSheet
Dim i As Long
For i = 1 To 500
ws.Cells(i, 1).Value = i
ws.Cells(i, 2).Value = "test"
ws.Cells(i, 3).Value = "2021/05/06"
Next
Dim maxRow As Long
Dim test1, test2, test3 As Variant
maxRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
Stop
test1 = ws.Cells(maxRow, 1).Value
test2 = ws.Cells(maxRow, 2).Value
test3 = ws.Cells(maxRow, 3).Value
Debug.Print TypeName(test1)
Debug.Print TypeName(test2)
Debug.Print TypeName(test3)
End Sub
VarType関数
構文:varType(値)
TypeName関数と似ていますが、戻り値が数値です。
文字列 | 値 | 内容 |
vbEmpty | 0 | Variant型の初期値 |
vbNull | 1 | Null値 |
vbInteger | 2 | 整数型 |
vbLong | 3 | 長整数型 |
vbSingle | 4 | 単精度浮動小数点型 |
vbDouble | 5 | 倍精度浮動小数点型 |
vbCurrency | 6 | 通貨型 |
vbDate | 7 | 日付型 |
vbString | 8 | 文字列型 |
vbObject | 9 | オブジェクト |
vbError | 10 | エラー型 |
vbBoolean | 11 | ブール型 |
vbVariant | 12 | バリアント型 |
vbDataObject | 13 | 非OLEオートメーションオブジェクト |
vbDecimal | 14 | 10進数型 |
vbByte | 17 | バイト型 |
vbArray | 8192 | 配列 |
Sub test()
Dim ws As Worksheet
Set ws = ActiveSheet
Dim i As Long
For i = 1 To 500
ws.Cells(i, 1).Value = i
ws.Cells(i, 2).Value = "test"
ws.Cells(i, 3).Value = "2021/05/06"
Next
Dim maxRow As Long
Dim test1, test2, test3 As Variant
maxRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
Stop
test1 = ws.Cells(maxRow, 1).Value
test2 = ws.Cells(maxRow, 2).Value
test3 = ws.Cells(maxRow, 3).Value
Debug.Print VarType(test1)
Debug.Print VarType(test2)
Debug.Print VarType(test3)
End Sub
まとめ
方法 | 確認方法 | メリット | デメリット |
ローカルウインドウ | VBE画面 | デバッグしながら一気に確認できる。 | 戻り値が得られないので、if文など分岐処理ができない。 |
TypeName関数 | 戻り値(文字列) | 戻り値(文字列)を取得できる。 | 確認効率が悪い。 |
VarTye関数 | 戻り値(数値) | 戻り値(数値)を取得できる。 | 確認効率が悪い。値の意味を覚えなければならない。 |
確認だけなら、ローカルウインドウ一択です。
しかし、戻り値が得られるTypeName関数やVarType関数も使い道はたくさんあります。
例えば、入力値がDate型か、Double型か、文字列型を判断することで入力をやり直すモジュール→作成中
入力値がDouble型の場合、文字列型に変換するモジュール→作成中
if文などに使えるのは強力ですね。
入力フォームを作ったり、データをきれいな状態に保つのに重宝します。