「配列の中身をmsgboxで表示」
という検索で、このサイト『インストラクターのネタ帳』へのアクセスがあることに気づきました。
配列変数に格納されているデータを、メッセージボックスに表示させる方法を探している方による検索です。
そもそも、どのプログラミング言語での話なのかもわかりませんが、もしもVBA(Visual Basic for Applications)で、デバッグのために配列に格納されているデータをメッセージボックスに表示させたいと思ってらっしゃるのなら、是非とも知っていただきたいVBE(Visual Basic Editor)の機能があります。
ローカルウィンドウです。
ローカルウィンドウを使えば、わざわざメッセージボックスに表示させなくても、配列の中身を確認することができます。
配列変数の中身をローカルウィンドウで確認するサンプルマクロ
以下のマクロを実行してみてください。
Dim arr(1 To 3) As String
arr(1) = "東京"
arr(2) = "大阪"
arr(3) = "名古屋"
Stop
Stopステートメントで、ステップ実行モードになりますから、メニュー[表示]-[ローカルウィンドウ]からローカルウィンドウを表示してみてください。
下図のように、変数の中身を確認できるはずです。
「配列の中身をmsgboxで表示」
という検索をなさった方が、もしもVBAで、デバッグのために配列の中身をメッセージボックスに表示する方法を探していたのであれば、是非ローカルウィンドウを使っていただきたいところです。
配列の中身をメッセージボックスに表示するサンプル3つ
デバッグのためではなく、実際に配列の中身をメッセージボックスに表示させたい、という方向けのサンプルマクロを3つご紹介します。
For~Next文で配列の中身を順番にメッセージボックスに表示する
配列の中身を順番にメッセージボックスで表示するなら以下のようなマクロです。
Dim arr(1 To 3) As String
Dim i As Long
arr(1) = "東京"
arr(2) = "大阪"
arr(3) = "名古屋"
For i = LBound(arr) To UBound(arr)
MsgBox arr(i)
Next i
配列の添字・インデックスの、最小値をLBound関数で、最大値をUBound関数でそれぞれ取得して、添字の最小値から最大値までFor~Nextループを回して、
For i = LBound(arr) To UBound(arr)
順番にメッセージボックスに表示しています。
MsgBox arr(i)
配列の中身を連結してまとめてメッセージボックスに表示する
順番に表示させるのではなく、配列の各要素に格納されているデータを連結して、メッセージボックスを1回だけ表示させたいという場合、以下のようなマクロが、まずは、わかりやすいでしょう。
Dim arr(1 To 3) As String
Dim i As Long
Dim msg As String
arr(1) = "東京"
arr(2) = "大阪"
arr(3) = "名古屋"
For i = LBound(arr) To UBound(arr)
msg = msg & arr(i) & " "
Next i
MsgBox msg
End Sub先ほどのマクロと同じようにFor~Nextループを回して、
For i = LBound(arr) To UBound(arr)
間に半角スペースを入れながら、変数・msgに配列の中身を連結しながら格納して、
msg = msg & arr(i) & " "
ループを抜けてからメッセージボックスを表示しています。
MsgBox msg
Join関数で配列の中身を連結してメッセージボックスを表示する
実は、ループ処理をしなくても、Join関数を使えば、配列の中身を連結することができます。
Dim arr(1 To 3) As String
arr(1) = "東京"
arr(2) = "大阪"
arr(3) = "名古屋"
MsgBox Join(arr)
End SubJoin関数は配列の要素に格納されているデータを結合した文字列を返す関数です。
Join関数の第1引数には結合したいデータを含んだ1次元配列を、第2引数にはデータを結合するときにデータ間に入れたい区切り文字列を指定します。
第2引数を省略したときは、半角スペースが区切り文字として使われ、上記のマクロは、この例に該当します。
例えば、配列のデータを、例えば全角スペースを入れながら連結してメッセージボックスに表示するなら、上記のマクロの
MsgBox Join(arr)
を、
MsgBox Join(arr, " ")
に、改行を入れながら連結するのなら、
MsgBox Join(arr, vbCrLf)
としてください。
最終更新日時:2019-01-31 12:23
Home » エクセルマクロ・Excel VBAの使い方 » 配列 » 配列の中身をMsgBox関数で表示する