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

VBAにおける変数のメモリアドレスについて|VBA技術解説(11月8日)
空文字列の扱い方と処理速度について(""とvbNullString)|VBA技術解説(1月7日)
Errオブジェクトとユーザー定義エラー|VBA入門(11月5日)
シングルクォートの削除とコピー(PrefixCharacter)|VBA技術解説(11月4日)
ユーザー定義型の制限とクラスとの使い分け|VBA技術解説(11月3日)
クリップボードに2次元配列を作成してシートに貼り付ける|VBA技術解説(11月1日)
VBAクラスを使ったイベント作成(Event,RaiseEvent,WithEvents)|VBA技術解説(10月31日)
VBAクラスのAttributeについて(既定メンバーとFor Each)|VBA技術解説(10月19日)
VBAの用語について:ステートメントとは|VBA技術解説(10月16日)
VBAのマルチステートメント(複数のステートメントを同じ行に)|VBA技術解説(10月14日)


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

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.ひらがな⇔カタカナの変換|エクセル基本操作
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.セルに文字を入れるとは(Range,Value)|VBA入門



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

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


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




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