【VBAエラー対策】「コンパイルエラー:同じ適用範囲内で宣言が重複している」の原因と解決方法

VBA(Visual Basic for Applications)でプログラムを実行しようとしたとき、突然「コンパイルエラー:同じ適用範囲内で宣言が重複している」というエラーメッセージが表示されることがあります。

初心者の方はもちろん、普段からVBAを使用されている方でも、このエラーに戸惑うことがあるかもしれません。本記事ではこのエラーの意味と原因、そして解決方法をわかりやすく解説いたします。


目次

エラーの概要:「同じ適用範囲内で宣言が重複している」とは?

このコンパイルエラーは、同一スコープ(適用範囲)内で同じ名前の変数・定数・プロシージャ(SubやFunction)を複数回宣言してしまった場合に発生します。

例:変数名の重複

Dim i As Long
Dim i As Integer  ' ← 同じ名前の変数をもう一度宣言しているためエラー

例:プロシージャ名の重複

Sub ProcessData()
End Sub

Sub ProcessData()  ' ← 同じ名前のSubが存在しているためエラー
End Sub

よくある原因と注意点

原因説明
変数の二重宣言同じ関数やモジュールの中で、同じ名前の変数を Dim で繰り返し定義している
関数・サブルーチンの重複同一モジュール内に、同名のSubやFunctionが2つ以上存在している
名前の競合グローバル変数やプロパティとローカル変数の名前がかぶっている
外部参照との衝突ライブラリ間で同じ名前のオブジェクトや定数が存在している(例:MSFormsなど)

解決方法

以下の方法で、エラーを確実に解消できます。

1. 同じ名前で変数を再宣言しない

' NG
Dim count As Long
Dim count As Integer  ' ← 重複している

' OK
Dim count As Long
Dim totalCount As Integer

サブルーチンや関数の名前を一意にする

' NG
Sub ExportData()
End Sub

Sub ExportData()  ' ← 名前が重複している

' OK
Sub ExportData()
End Sub

Sub ExportDataToCSV()
End Sub

3. Option Explicit を活用する

モジュールの冒頭に Option Explicit を記述することで、すべての変数を明示的に宣言することが義務化され、誤った再宣言やスペルミスを防ぐことができます。


まとめ:エラーを防ぐには「命名ルール」と「整理されたコード」が重要

「コンパイルエラー:同じ適用範囲内で宣言が重複している」は、VBAのコードが複雑になるほど起こりやすくなるエラーの一つです。
一つのスコープ内で同じ名前を使わないこと、プロシージャごとに役割を明確に分けることが、予防の鍵です。

コードを書いている最中にこのエラーが発生した場合は、落ち着いて変数やプロシージャの名前が重複していないかを確認してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次