ExcelVBAを学び始めると、最初に必ず目にするのが Dim As という記述です。
しかし実際には、
- Dim As はなぜ必要なのか
- どこに書けばよいのか
- As を省略しても動くのはなぜか
- 実務ではどの型を使うべきなのか
といった疑問を抱えたまま、なんとなく使っている方も多いのではないでしょうか。
本記事では、VBAにおける Dim As の使い方をテーマに、
単なる文法説明にとどまらず、
「なぜそう書くのか」「書かないと何が起きるのか」までを丁寧に解説します。
初心者の方がつまずきやすいポイントはもちろん、
実務でコードを書く際に 品質・保守性を高める Dim As の使い方 まで網羅しています。
目次
- ✅ VBAのDim Asとは何か
- ・Dim Asの役割
- ✅ Dim Asの基本構文
- ・Dim Asの基本的な書き方
- ✅ なぜDim Asで変数宣言が必要なのか
- ・変数宣言をしないと起こる問題
- ・Option Explicitとの関係
- ✅ Dim Asで指定できる主なデータ型
- ・数値を扱う型
- ・文字列を扱う型
- ・日付・時刻を扱う型
- ✅ Asを省略した場合の挙動
- ・Asを省略するとどうなるか
- ・Variant型の注意点
- ✅ 複数の変数をDim Asで宣言する方法
- ・同じ型の変数をまとめて宣言する
- ✅ Dim Asのスコープ(有効範囲)
- ・プロシージャ内での宣言
- ・モジュールレベルでの宣言
- ✅ DimとPublicの違い
- ・Publicで宣言した場合
- ✅ Dim Asを使った実務的なサンプル
- ・セルの値を取得して処理する例
- ・文字列を組み立てる例
- ✅ Dim Asを正しく使うための実務ルール
- ・変数名は意味の分かる名前にする
- ・Variantは原則使わない
- ・Option Explicitを必ず使う
- ✅ VBAコードが複雑になってきた場合の考え方
- ✅ まとめ:VBA Dim Asを正しく使うことが品質を左右する
✅ VBAのDim Asとは何か
・Dim Asの役割
Dim As は、VBAで変数を宣言するための命令です。
変数とは、数値や文字列などのデータを一時的に保存する箱のようなものです。
VBAでは、変数を使う前に「この変数は何の型なのか」を明示することで、
Excelが正しく処理できるようになります。
そのために使われるのが Dim As です。
✅ Dim Asの基本構文
・Dim Asの基本的な書き方
Dim As の基本構文は次のとおりです。
Dim 変数名 As データ型
たとえば、数値を格納する変数を宣言する場合は次のように書きます。
Dim total As Long
この1行で、「total という変数は数値(Long型)として使います」とVBAに宣言しています。
✅ なぜDim Asで変数宣言が必要なのか
・変数宣言をしないと起こる問題
VBAでは、Dim As を書かなくても変数を使えてしまうケースがあります。
しかし、これは推奨される使い方ではありません。
変数宣言を行わない場合、
- タイプミスに気づけない
- 意図しない型として扱われる
- 実行時エラーが発生しやすくなる
といった問題が起こります。
・Option Explicitとの関係
VBAでは、モジュールの先頭に Option Explicit を記述することで、
すべての変数宣言を強制できます。
Option Explicit
これを記述すると、Dim As を書いていない変数はエラーになります。
実務では Option Explicit + Dim As は必須のセット と考えて問題ありません。
参考:【VBA】Option Explicitとは?変数未宣言エラーを防ぐ基本設定|初心者必見重要機能
✅ Dim Asで指定できる主なデータ型
・数値を扱う型
VBAでよく使われる数値型には次のようなものがあります。
Dim i As Integer
Dim cnt As Long
Dim price As Double
実務では Long型 が最もよく使われます。
Integerは範囲が狭く、思わぬオーバーフローを起こす可能性があるためです。
・文字列を扱う型
文字列を扱う場合は String 型を使用します。
Dim userName As String
セルの値やメッセージ、ファイル名など、
文字を扱う場面ではほぼString一択です。
・日付・時刻を扱う型
日付や時刻を扱う場合は Date 型を使用します。
Dim today As Date
Date型は、内部的には数値として管理されているため、
計算や比較も可能です。
参考:【VBA】Dimとは?変数宣言の基本と書き方をわかりやすく解説|初心者でも実務で使える知識を解説
✅ Asを省略した場合の挙動
・Asを省略するとどうなるか
次のように As を省略して変数を宣言することもできます。
Dim value
この場合、value は Variant型 として扱われます。
・Variant型の注意点
Variant型は柔軟ですが、
- 処理速度が遅くなる
- 型が曖昧になりバグを生みやすい
というデメリットがあります。
実務では、明示的に As で型を指定することが強く推奨されます。
参考:【VBA】Variant型とは?便利だが危険な理由と使いどころ|実務で失敗しないための徹底ガイド
✅ 複数の変数をDim Asで宣言する方法
・同じ型の変数をまとめて宣言する
複数の変数を同時に宣言することも可能です。
Dim x As Long, y As Long, z As Long
注意点として、
Dim x, y, z As Long
と書くと、z だけが Long型になり、
x と y は Variant型になるため注意が必要です。
✅ Dim Asのスコープ(有効範囲)
・プロシージャ内での宣言
Sub や Function 内で宣言した変数は、その中でのみ有効です。
Sub Sample()
Dim i As Long
End Sub
・モジュールレベルでの宣言
プロシージャの外で宣言すると、
同じモジュール内のすべての処理から参照できます。
Dim total As Long
✅ DimとPublicの違い
・Publicで宣言した場合
Public を使うと、プロジェクト全体で変数を共有できます。
Public gCount As Long
ただし、乱用するとコードが分かりにくくなるため、
実務では必要最低限に留めるのが基本です。
参考:【VBA】変数の宣言はなぜ必要?書かないと何が起こるのかを徹底解説
✅ Dim Asを使った実務的なサンプル
・セルの値を取得して処理する例
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
・文字列を組み立てる例
Dim msg As String
msg = "処理が完了しました"
MsgBox msg
このように、Dim As はすべてのVBA処理の土台となります。
✅ Dim Asを正しく使うための実務ルール
・変数名は意味の分かる名前にする
Dim totalAmount As Long
・Variantは原則使わない
意図的に必要な場合を除き、型は必ず指定します。
・Option Explicitを必ず使う
変数ミスを防ぐ最も重要な設定です。
✅ VBAコードが複雑になってきた場合の考え方
VBAで Dim As を正しく使えるようになると、
コードは確実に安定しますが、
処理量が増えると管理が大変になることもあります。
そうした場合は、
- 処理単位でSubを分ける
- 役割ごとに変数を整理する
といった設計の見直しが重要です。
✅ まとめ:VBA Dim Asを正しく使うことが品質を左右する
- Dim As は変数を宣言するための基本構文
- As を省略すると Variant 型になる
- Option Explicit と併用するのが実務の基本
- 型を明示することでバグとエラーを防げる
- 正しい Dim As の使い方はコード品質に直結する
Dim As は地味ですが、VBAの理解度を最も左右する要素のひとつです。
本記事の内容を意識して書くだけで、
VBAコードの読みやすさ・安全性は大きく向上します。