変数と型
変数宣言の書き方
この記事では配列については扱っていません。ぐぐってください。
(いずれここでも書きたい)
VBAでは、
Dim 変数名 As 型
という形で宣言を行います。
「As 型」は省略することも可能です。(後述しますが非推奨)
例をいくつか挙げると、
Dim hoge Dim fuga As Long
という感じです。
尚、以下のようにカンマ区切りで一度に複数の宣言をすることもできますがこれも非推奨。
可読性が落ちるので。
' hogeが型指定なし、fugaがLong Dim hoge, fuga As Long ' hogeもfugaもLong Dim hoge As Long, fuga As Long
型
そもそも指定できる型にはどういうものがあるのかというと…色々あるのですが、とりあえずよく使うやつを抜粋。以下のような感じで把握しておけばOKです。
【データ型変数】
数字とか文字とかが入るやつ
String 文字列 Long 整数 Single 実数 Boolean True/False Date 日付 Variant 何でも
【オブジェクト型変数】
ワークシートとかセルそのものが入るやつ
Worksheet ワークシート Range セル範囲 Object オブジェクトなら何でも
「データ型」「オブジェクト型」って何だよ!という方、深く気にしなくてOKです。
なんとなくのイメージで。
また、宣言時に型を指定していない場合は自動的にVariantになります。
何を入れてもOKになります。やった万能じゃん。
尚、型を指定しないこと・Variantを使うことのデメリットは以下のような感じ。
- 可読性が落ちる
- コーディングミスに気付きにくい
- メモリをたくさん使う
ミスに気付きにくいというのは、
例えば数値であるLong型で宣言した変数に文字列を入れようとするとエラーになるのですが、
Variantは何でも入るので、もちろん何を入れてもエラーにならないのです。
各型における変数のセット方法
以下のような感じ。
データを入れるときは「変数 = データ」とし、
オブジェクトを入れるときは「Set 変数 = オブジェクト」とします。
よく分からない人は覚えなくていいので、とりあえず「変数 = データ」と書いて、
「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」というエラーが出たら頭に「Set」を付けてみましょう。
Dim hoge1 As String hoge1 = "文字列" Dim hoge2 As Long hoge2 = 1 Dim hoge3 As Single hoge3 = 0.1 Dim hoge4 As Boolean hoge4 = True Dim hoge5 As Date hoge5 = "2015/01/01" hoge5 = "2015/01/01 12:34:56" Dim hoge6 As Variant hoge6 = "文字列" hoge6 = 1 Set hoge6 = ThisWorkbook.Worksheets("Sheet1") Dim hoge7 As Worksheet Set hoge7 = ThisWorkbook.Worksheets("Sheet1") Dim hoge8 As Range Set hoge8 = ThisWorkbook.Worksheets("Sheet1").Range("A1") Dim hoge9 As Object Set hoge9 = ThisWorkbook.Worksheets("Sheet1") Set hoge9 = ThisWorkbook.Worksheets("Sheet1").Range("A1")