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

ExcelマクロVBAの問題点と解決策、VBAの技術的解説
公開日:2016-08-07 最終更新日: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 ・・・新着記事一覧を見る

ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)
VBAでクリップボードへ文字列を送信・取得する3つの方法|VBA技術解説(2023-12-07)
難しい数式とは何か?|エクセル雑感(2023-12-07)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.並べ替え(Sort)|VBA入門
8.条件分岐(IF)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門




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


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



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