VBAエラー「同じ適用範囲で宣言が重複しています」の解決方法

Visual Basic

VBAのプログラムで「コンパイルエラー 同じ適用範囲で宣言が重複しています」というエラーが発生する原因と、その解決方法について説明します。このエラーは変数を複数回宣言しようとしたときに発生します。具体的なコード例をもとに解説し、どのように修正すればエラーを解消できるかを示します。

エラーの原因

「同じ適用範囲で宣言が重複しています」というエラーは、VBAにおいて同じ名前の変数を複数回宣言した場合に発生します。例えば、以下のコードでは「LastRow」という変数が2回宣言されています。

Dim LastRow As Long
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
Range("U5" & LastRow).FillDown

Dim LastRow As Long
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
Range("Z5" & LastRow).FillDown

このように、同じスコープ内で「LastRow」という変数を2度宣言することが原因でエラーが発生します。

解決方法

このエラーを解決するためには、同じ変数名を重複して宣言しないようにする必要があります。例えば、変数名を異なる名前に変更することでエラーを解消できます。

Dim LastRow1 As Long
LastRow1 = Cells(Rows.Count, "A").End(xlUp).Row
Range("U5" & LastRow1).FillDown

Dim LastRow2 As Long
LastRow2 = Cells(Rows.Count, "A").End(xlUp).Row
Range("Z5" & LastRow2).FillDown

このように、異なる変数名(例えば「LastRow1」と「LastRow2」)を使うことで、エラーを回避できます。

マクロの実行時エラー「中断モードでコードを実行することができません」について

「中断モードでコードを実行することができません」というエラーは、マクロが正常に実行されていない場合に表示されます。このエラーは、コード内で変数の宣言ミスやタイプミスが発生している場合に見られます。エラーを解消するためには、コードの書き方を見直し、変数名や関数名に間違いがないかを確認します。

温度計アラームの作成方法に関するプログラム修正

また、質問者の目的である「U5とZ5のセルに関数をオートフィルする」ためには、セルの範囲指定を適切に行う必要があります。以下は修正されたコードの例です。

Dim LastRow As Long
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
Range("U5:U" & LastRow).FillDown
Range("Z5:Z" & LastRow).FillDown

この修正により、「U5」と「Z5」のセルがA列の最終行まで自動でコピーされるようになります。

まとめ

VBAの「同じ適用範囲で宣言が重複しています」というエラーは、同じ変数を複数回宣言することによって発生します。エラーを解決するためには、変数名を変更して重複を避けることが必要です。また、コードのエラーを修正し、適切にセル範囲を指定することで、目的通りに動作するマクロを作成できます。エラーを見つけて修正することは、VBAを学ぶ過程で非常に重要なスキルとなります。

コメント

タイトルとURLをコピーしました