VBA Dimステートメントについて ~関数の解説と使用例~

VBAのDimステートメントとは?Dimステートメントの使い方

ENGINEER.CLUB編集部

ENGINEER.CLUB編集部

VBAに触れる際に、必ずといいっていいほど見かけるのが「Dim」という文字列です。ここでは、Dimの基本的な使い方について説明していきます。

One dayインターン

1.Dimステートメントについて

1-1.Dimステートメントとは

Dimステートメントは、変数の型や名前を宣言する際に使用します。「物の大きさ」や「範囲」といった意味を持つ「Dimension」が名前の元になっています。

1-2.Dimステートメントの使い方

Dim [変数名] ([配列の次元数]) as [データ型]

構文のパーツ必須/省略説明
変数名必須変数の名前を設定
配列の次元数省略可能配列変数を定義する時にのみ設定
各次元の要素数を設定
データ型省略可能変数の型を設定

1-2-1.指定するデータ型の種類

変数の型は数多くあるため、使用頻度が高いものをあげていきます。これ以外にも、ユーザー自身が型を定義できる機能もあります。

データ型名名称値の範囲
Date日付型西暦10011日~西暦99991231
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

型の確認

実行時に、ウォッチ内の型が「VariantEmpty」になっています(Emptyになっているのは、値が入っていないので型が未定のため)

ウォッチ内の型が「Variant/Empty」になっています

変数に値(数字の「1」)が設定されると、「Variant/Integer」に変更される

変数に値(数字の「1」)が設定されると、「Variant/Integer」に変更される

2-2-2.複数の変数宣言を、1行で行う

変数の宣言は、1行で連続して行うこともできます

Sub sample2()
    Dim var1, var2, var3 As Integer

    var1 = "999"
    var2 = 999
    var3 = 123

End Sub

実行時に、var1var2のウォッチ内の型が「VariantEmpty」になっています(Emptyになっているのは、値が入っていないので型が未定のため)

var1、var2のウォッチ内の型が「Variant/Empty」になっています

Var1に文字列の「999」、var2に数字の「999」を設定されると、var1の型が「Variant/String」、var2の型が「Variant/Integer」に変更される。

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」が設定される

実行結果:数字の「123」が設定される

2-3-2.文字列型の変数に、数字の「123」を設定

Sub sample4()
    Dim cnt As String  '文字列型で変数を定義
    cnt = 123          '数字の「123」を設定
    
End Sub

実行結果:文字列の「123」が設定される

実行結果:文字列の「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)に値が設定されています。

実行結果:定義していない変数(cnt)に値が設定されています

定義をしていない変数でも、エラーにならずに正常に動作しています。定義した変数名を打ち間違えてVBAを作った場合、意図しない動きになってしまうので注意してください。


3.最後に

型の自動変換や未定義の変数が使用できる等、エラー原因にもなりそうな機能がありますが、うまく使いこなしてみてください。

私たちは、全てのエンジニアに市場価値を高め自身の望む理想のキャリアを歩んでいただきたいと考えています。もし、今あなたが転職を検討しているのであればこちらの記事をご一読ください。理想のキャリアを実現するためのヒントが見つかるはずです。

『技術力』と『人間力』を高め市場価値の高いエンジニアを目指しませんか?

『技術力』と『人間力』を高め市場価値の高いエンジニアを目指しませんか?

私たちは「技術力」だけでなく「人間力」の向上をもって遙かに高い水準の成果を出し、関わる全ての人々に感動を与え続ける集団でありたいと考えています。

高い水準で仕事を進めていただくためにも、弊社では次のような環境を用意しています。

  • 定年までIT業界で働くためのスキル(技術力、人間力)が身につく支援
  • 「給与が上がらない」を解消する6ヶ月に1度の明確な人事評価制度
  • 平均残業時間17時間!毎週の稼動確認を徹底しているから実現できる働きやすい環境

現在、株式会社ボールドでは「キャリア採用」のエントリーを受付中です。

まずは以下のボタンより弊社の紹介をご覧いただき、あなたの望むキャリアビジョンをエントリーフォームより詳しくお聞かせください。

コメント

26卒 新卒学生向け主催企業:株式会社ボールド
どんなIT企業なら理想のエンジニアになれるのか?

2時間でIT業界の全てが分かるOne dayインターン

26卒 新卒学生向け主催企業:株式会社ボールド
どんなIT企業なら理想のエンジニアになれるのか?

2時間でIT業界の全てが分かるOne dayインターン