VBAテクニック集 VBA一覧 変数・知識 文法・構文

【VBA】Dim Asの使い方を完全解説|変数宣言の基本と実務での注意点

ExcelVBAを学び始めると、最初に必ず目にするのが Dim As という記述です。
しかし実際には、

  • Dim As はなぜ必要なのか
  • どこに書けばよいのか
  • As を省略しても動くのはなぜか
  • 実務ではどの型を使うべきなのか

といった疑問を抱えたまま、なんとなく使っている方も多いのではないでしょうか。

本記事では、VBAにおける Dim As の使い方をテーマに、
単なる文法説明にとどまらず、
「なぜそう書くのか」「書かないと何が起きるのか」までを丁寧に解説します。

初心者の方がつまずきやすいポイントはもちろん、
実務でコードを書く際に 品質・保守性を高める 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コードの読みやすさ・安全性は大きく向上します。

    -VBAテクニック集, VBA一覧, 変数・知識, 文法・構文