ExcelマクロVBA技術解説
ローカルウィンドウの使い方

ExcelマクロVBAの問題点と解決策、エクセルVBAの技術的解説
最終更新日:2016-08-07

ローカルウィンドウの使い方

VBAのエディター、VBEにはいくつかのウィンドウがあります、
その中で、ローカルウィンドウの使い方の説明です、
これが使えないと、配列やオブジェクトを扱ったVBAのデバッグに困ることになります。


サンプルコードは、以下の表を使っています。

VBA サンプル画像


まずは、
配列でのローカルウィンドウの使い方について。

次のようなVBAコードを書きました。

VBA サンプルコード

実行(F5)すると、

VBA サンプルコード

Stopで停止しますね。
この時、MyArrayの中に、ちゃんと入っているか確認したいですね。
よく使う、イミディエイトウィンドウですと、

VBA イミディエイトウィンドウ

これでEnterすると、

VBA エラーメッセージ

エラーメッセージの、
「型が一致しません。」

これは意味が分かりずらいですね、
要は、イミディエイトウィンドウで?を使って値を表示できる型ではないという事です。
?を使って値を表示できるのは、単一の値を持ったデータ型のみです。

VBA イミディエイトウィンドウ

配列の添字を確実に指定した時だけ、?を使って値を表示できるのです。

VBA イミディエイトウィンドウ

これでEnterすると、

VBA エラーメッセージ

表が10*10なので、当然こうなります。
上記の例なら、10*10と分かっていますが、複雑なVBAの途中で添字の最大を調べたい時も多いです。

VBA イミディエイトウィンドウ

イミディエイトウィンドウなら、このように調べることになります。
そして、要素の一つずつを、?を使って調べる・・・
これはかなり面倒です。

そこで、ローカルウィンドウを使います。

VBA 参考画像

VBA ローカルウィンドウ

このような画面が表示されます。
MyArrayの前にある+をクリックすると、

VBA ローカルウィンドウ

これで、1次元の要素は、1~10であることが一目でわかります。

MyArray(1)の前にある+をクリックすると、

VBA ローカルウィンドウ

これで、2次元の要素も、1~10であることが一目でわかります。
そして、各要素の値も一目で調べられるという事です。
配列を使う場合は、ローカルウィンドウを使えることは必須ですね。



続けて、
オブジェクトでのローカルウィンドウの使い方について。

次のようなVBAコードを書きました。

VBA サンプルコード

実行(F5)して、ローカルウィンドウを見てみましょう。

VBA ローカルウィンドウ

MyRangeの前にある+をクリックして展開すると、、

VBA ローカルウィンドウ

このように、Rangeオブジェクトに含まれるメンバーが表示されます。
各プロパティの値も一度に見れて、非常に便利です。
ただし、注意点があります。
オブジェクトに含まれる全てのメンバーが表示されるわけではありません。
メソッドは表示されません
ひょっとしたら、表示されるメソッドも存在するかもしれませんが、基本的には表示されません。
メソッドは値を返すとは限りませんし、
値を返す場合、値を表示するという事は、そのメソッドを実行するという事になりますので、
このウィンドウを開いたら勝手にメソッド実行されたら困りますからね。

また、プロパティでも表示されないものが結構あります。
オブジェクトブラウザー(F2)と並べてみます。

VBA ローカルウィンドウ

上下を比べると・・・
いきなり、普通に良く使うAddressがローカルウィンドウにありません。
MSが正式にどのように言っているかどうかは分かりませんが、
表示されていないプロパティは、引数が必要なものばかりです。
オブジェクトブラウザーのメンバー詳細表示部分をみると、Addressには引数があるのが分かります。
つまり、引数を指定しないと値が表示できないプロパティは表示されないという事です。

VBA ローカルウィンドウ

最も代表的なValueプロパティもローカルウィンドウには表示されていません
普通は指定しないのですが、Valueにも引数があるのです。
このような引数のあるプロパティの値はイミディエイトウィンドウで確認してください。

Value2は引数が無いので、ローカルウィンドウに表示されています。

VBA ローカルウィンドウ

今回の例では、10*10セルなので、Value2も2次元配列となっています。


ローカルウィンドウは、決して万能ではありませんが、
配列や、オブジェクトの中を調べる時には必須ですので、是非使えるようになってください。



同じテーマ「マクロVBA技術解説」の記事

VBAとは、マクロとは
コーディングとデバッグ
ローカルウィンドウの使い方
WorksheetFunctionについて
RangeとCellsの深遠
Offset、Resizeを使いこなそう
値渡し、参照渡しについて(ByVal,ByRef)
最終行・最終列の取得方法(End,CurrentRegion,SpecialCells,UsedRange)
ユーザー定義関数の作り方
セルの値について(Value,Value2,Text)
Excelのバージョンを判断して「名前を付けて保存」


新着記事NEW ・・・新着記事一覧を見る

Byte配列と文字コード関数について|VBA技術解説(8月20日)
PowerQueryの強力な機能をVBAから利用する方法|VBA技術解説(8月4日)
練習問題31(セル結合を解除して値を埋める)|VBA練習問題(7月30日)
練習問題30(マトリックス→リスト形式)|VBA練習問題(7月25日)
Applicationを省略できるApplicationのメソッド・プロパティ一覧|VBA技術解説(7月22日)
コレクション(Collection)の並べ替え(Sort)に対応するクラス|VBA技術解説(7月20日)
CSVの読み込み方法(ジャグ配列)|VBAサンプル集(7月15日)
その他のExcel機能(グループ化、重複の削除、オートフィル等)|VBA入門(7月14日)
オートフィルタ退避回復クラスを複数シート対応させるVBAクラス|VBA技術解説(7月6日)
オートフィルタを退避回復するVBAクラス|VBA技術解説(7月6日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数とデータ型(Dim)|ExcelマクロVBA入門
6.繰り返し処理(For Next)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.ひらがな⇔カタカナの変換|エクセル基本操作
10.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説



  • >
  • >
  • >
  • ローカルウィンドウの使い方

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。




    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
    本文下部へ