ExcelマクロVBA技術解説 | ローカルウィンドウの使い方 | ExcelマクロVBAの問題点と解決策、エクセルVBAの技術的解説



最終更新日:2016-08-07

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

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

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





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

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



実行(F5)すると、



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



これでEnterすると、



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



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



これでEnterすると、



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



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

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





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



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

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



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


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

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



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



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



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

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



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



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

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



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


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




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

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

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

数値範囲で表検索するVLOOKUP近似一致|エクセル関数超技(10月5日)
エクセルVBAでのシート指定方法|VBA技術解説(9月8日)
VBAのクラスとは(Class,Property,Get,Let,Set)|VBA技術解説(8月28日)
VBAこれだけは覚えておきたい必須基本例文10|VBA技術解説(8月22日)
VBAの省略可能な記述について|ExcelマクロVBA技術解説(8月11日)
複数条件判定を行う時のコツ|ExcelマクロVBA技術解説(7月11日)
For Next の使い方いろいろ|VBA技術解説(6月14日)
VBAを定型文で覚えよう|ExcelマクロVBA技術解説(3月26日)
VBAスタンダード試験対策まとめ|MOS VBAエキスパート対策(3月16日)
ユーザーフォームとメニューの操作|MOS VBAエキスパート対策(3月14日)

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

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数とデータ型(Dim)|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.RangeとCellsの使い方|ExcelマクロVBA入門
6.定数と型宣言文字(Const)|ExcelマクロVBA入門
7.ひらがな⇔カタカナの変換|エクセル基本操作
8.マクロって何?VBAって何?|ExcelマクロVBA入門
9.繰り返し処理(For Next)|ExcelマクロVBA入門
10.とにかく書いて見よう(Sub,End Sub)|VBA入門



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

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


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





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

    本文下部へ

    ↑ PAGE TOP