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 ・・・新着記事一覧を見る

VBA100本ノック 37本目:グラフの色設定|VBA練習問題(12月1日)
VBA100本ノック 36本目:列の並べ替え|VBA練習問題(12月1日)
VBA100本ノック 35本目:条件付き書式|VBA練習問題(11月29日)
VBA100本ノック 34本目:配列の左右回転|VBA練習問題(11月28日)
VBA100本ノック 33本目:マクロ記録の改修|VBA練習問題(11月26日)
VBA100本ノック 32本目:Excel終了とテキストファイル出力|VBA練習問題(11月25日)
VBA100本ノック 31本目:入力規則|VBA練習問題(11月24日)
将棋とプログラミングについて~そこには型がある~|エクセル雑感(11月22日)
VBA100本ノック 30本目:名札作成(段組み)|VBA練習問題(11月22日)
VBA100本ノック 29本目:画像の挿入|VBA練習問題(11月21日)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.マクロって何?VBAって何?|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.とにかく書いてみよう(Sub,End Sub)|VBA入門
10.マクロはどこに書くの(VBEの起動)|VBA入門




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


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



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