コンパイルエラー[変数が定義されていません]が出てしまうが?

Question 018k 拙著「組み方講座」 Previous Next
347ページ [4-5-4図] ◆ 環境・・ Excel 2003 & Windows XP
詳細は こちら
セル範囲を選択してコピーするマクロを自動記録して、テストは成功。
その後セル範囲を変数指定するために、マクロを347ページの6項指示のように修正して、9項まで実施後10項を実施したが、4-5-2図のようにならず、VBE画面が出て、
ダイアログボックスに 「コンパイルエラー、変数が定義されていません。」 とでて、マクロの中の9行目の修正部分 「セル範囲 = "A2:E4"」 の行の 「セル範囲」 部が反転表示になりました。
本書巻末にあるエラー対処を参考に、
(1) 変数入力ミスをチェックしましたが、自分では正しいと思っています。
(2) としてOption Explicitステートメントで定義もれとありましたので、念のため、Dim セル範囲 As String と宣言したところ、正しくマクロが動作しました。 なぜなのかわかりません? 教えてください。
Answer   Copyright (C) 2004.1.20 永井善王
「ExcelVBAマクロ組み方講座」をご購読いただき、ありがとうございます。 第4章5の 「セル範囲、行・列番号の指定に変数を利用しよう」 でご質問、随分進みましたね。 ここまで、一生懸命やられたのでしょうね。

[4-5-4図]では、下記のとおり、自動記録でマクロを作成しコードの一部を修正します。
1. 付属CD-ROMから 「データ量変動.xls」 を開いておいてから、自動記録を開始する
2. 「当月データ」シートを選択して、A2:E4セルを選択してコピーする
コンパイルエラー 3. 「DB」シートを選択し、A7セルを選択して、値だけを貼り付ける
4. マクロの自動記録を終了して、でき上がったマクロを表示する
5. 上記 3. で記録されたコード
Range("A2:E4").Select を下記のとおり修
 正する
    セル範囲 = "A2:E4"
    Range(セル範囲).Select
その後、上書き保存して、そのマクロを実行したら右図のエラーが出てしまったのですね。

オプションダイアログ この原因を結論から言いますと、VBE画面での設定がデフォルトでなく、カスタマイズされているからだと思います。

戻す方法は下記のとおりです。
1. Excelを立ち上げて、VBE画面を表示する
2. [ツール]メニュー、[オプション]とクリック
3. [オプション]ダイアログ(右図)の [変数の宣
 言を強制する]のチェックをオフにして [OK]

このチェックがオンの場合は下図のように、 Option Explicitステートメント
コードウィンドウの最上行に
Option Explicit ステートメントが自動記録されます。 そのため、宣言してない変数を使用するとエラーが出ます。
とりあえずは、その行を削除して本と同じ状態にしてから上書き保存し、マクロを実行してみてください。きっと、解決するはずです。

 

Excel VBA Macro