Home » エクセルマクロ・Excel VBAの使い方 » 配列 » 配列をウォッチウィンドウで確認する

配列をウォッチウィンドウで確認する

対象:Visual Basic Editor

配列をウォッチウィンドウで確認する

「vba ウォッチ式 配列」
「vba ウォッチウィンドウ 配列」
という検索キーワードを元に、VBE(Visual Basic Editor)のデバッグ用ツールでは、ウォッチウィンドウやイミディエイトウィンドウより、ローカルウィンドウのほうが初心者向けであることをご紹介しました。

確かに要素数が多くない配列の場合はローカルウィンドウで十分ですが、たくさんの要素を持った配列の、特に最後のほうの要素の中身を確認するような場合、ウォッチウィンドウのほうが便利なケースが出てきます。

[スポンサードリンク]

要素数の多い配列変数を使ったサンプルマクロ

以下のようなプロシージャで、配列変数・arrの、1,000番目や999番目の中身を確認するケースを考えてみます。

Sub 配列の中身をウォッチウィンドウで確認する()

 Dim arr(1 To 1000) As String

 arr(999) = "を"
 arr(1000) = "ん"
 Stop

End Sub

ローカルウィンドウを使って最後のほうの要素を確認するには、ローカルウィンドウ内を下のほうまでスクロールする必要があります。

配列をウォッチウィンドウで確認する

ローカルウィンドウ内にカーソルをおいて、[End]キーを押せば一番下までスクロールすることはできますが、デバッグ中にこの作業を何度も行うのは、やはり面倒なものです。

このような場合にはウォッチウィンドウのほうが便利です。

ウォッチウィンドウで配列を確認する

上記のマクロで、配列変数の1,000番目の要素の中身を確認するなら、以下のようにウォッチ式を追加します。
▼操作概要:配列の特定の要素の中身をウォッチウィンドウで確認する
※配列・arrのインデックス番号・1000の要素の中身を確認する例
[ウォッチ式の追加]ダイアログ-[式]欄に
「arr(1000)」と入力して[OK]ボタンを押す

配列をウォッチウィンドウで確認する

上記のウォッチ式を追加しておいて、ウォッチウィンドウを表示すると1,000番目の要素だけを確認できます。

配列をウォッチウィンドウで確認する

999番目の要素の中身を確認したいのなら、「arr(999)」をウォッチ式に追加です。

直値を指定せずに最後の要素を確認するウォッチ式

動的配列の場合に、インデックス番号・添え字を直接数値で指定することができない、というケースもあります。

その場合は「arr(UBound(arr))」をウォッチ式に追加してください。

配列をウォッチウィンドウで確認する

UBoundは、引数に指定された配列変数の、添字・インデックス番号の最大値を返す関数です。

そのUBound関数で取得した配列のインデックス番号の最大値が、配列の添字として指定されているのが、「arr(UBound(arr))」という式です。

最後の要素ではなく、その一つ前の要素をウォッチ式で確認したいのなら「arr(UBound(arr) - 1)」をウォッチ式に追加です。

ウォッチ式がわからない場合はプロシージャで理解しましょう

ここで登場する「arr(UBound(arr))」は、マクロ内・プロシージャ内で登場する式と同じです。

配列の全要素に対して処理を行う際の、
  For i = LBound(arr) to UBound(arr)
   MsgBox arr(i)
  Next i
といったループ文の中で登場する「arr(i)」という式で、変数・iの代わりに、配列のインデックス・添字の最大値を返すUBound関数を使った「UBound(arr)」が指定されているのが「arr(UBound(arr))」です。

ですから「arr(UBound(arr))」という式を、プロシージャの中で書けないレベルの方が、ウォッチ式としてこの式を書くことは現実的には不可能なのです。

「arr(UBound(arr))」というウォッチ式の意味がピンとこないという方は、以下のプロシージャを変数・nの値に注目しながらステップ実行して考えてみてください。

Sub UBound関数()

 Dim arr(1 To 1000) As String
 Dim n As Long

 arr(999) = "を"
 arr(1000) = "ん"

 n = UBound(arr)
 MsgBox arr(n)
 MsgBox arr(n - 1)

End Sub

上記プロシージャの「arr(n)」が、先のウォッチ式「arr(UBound(arr))」と同じ意味です。ウォッチ式としての「arr(UBound(arr))」をそのまま理解するよりも、プロシージャの中で分解して考えるほうが、理解が容易になるはずです。

関連語句
VBA, Visual Basic for Applications

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » 配列 » 配列をウォッチウィンドウで確認する

「配列」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.