Home » エクセルマクロ・Excel VBAの使い方 » 配列 » 配列の中身をMsgBox関数で表示する

配列の中身をMsgBox関数で表示する

対象:Excel2007, Excel2010, Excel2013

「配列の中身をmsgboxで表示」
という検索で、このサイト『インストラクターのネタ帳』へのアクセスがあることに気づきました。

配列変数に格納されているデータを、メッセージボックスに表示させる方法を探している方による検索です。

そもそも、どのプログラミング言語での話なのかもわかりませんが、もしもVBA(Visual Basic for Applications)で、デバッグのために配列に格納されているデータをメッセージボックスに表示させたいと思ってらっしゃるのなら、是非とも知っていただきたいVBE(Visual Basic Editor)の機能があります。

ローカルウィンドウです。
ローカルウィンドウを使えば、わざわざメッセージボックスに表示させなくても、配列の中身を確認することができます。

[スポンサードリンク]

配列変数の中身をローカルウィンドウで確認するサンプルマクロ

以下のマクロを実行してみてください。

Sub 配列の値をローカルウィンドウで確認する()

 Dim arr(1 To 3) As String
 
 arr(1) = "東京"
 arr(2) = "大阪"
 arr(3) = "名古屋"
 
 Stop

End Sub

Stopステートメントで、ステップ実行モードになりますから、メニュー[表示]-[ローカルウィンドウ]からローカルウィンドウを表示してみてください。

下図のように、変数の中身を確認できるはずです。

配列の中身をMsgBox関数で表示する

「配列の中身をmsgboxで表示」
という検索をなさった方が、もしもVBAで、デバッグのために配列の中身をメッセージボックスに表示する方法を探していたのであれば、是非ローカルウィンドウを使っていただきたいところです。

配列の中身をメッセージボックスに表示するサンプル3つ

デバッグのためではなく、実際に配列の中身をメッセージボックスに表示させたい、という方向けのサンプルマクロを3つご紹介します。

For~Next文で配列の中身を順番にメッセージボックスに表示する

配列の中身を順番にメッセージボックスで表示するなら以下のようなマクロです。

Sub 配列の値をメッセージボックスに表示_1()

 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

End Sub

配列の添字・インデックスの、最小値をLBound関数で、最大値をUBound関数でそれぞれ取得して、添字の最小値から最大値までFor~Nextループを回して、
  For i = LBound(arr) To UBound(arr)
順番にメッセージボックスに表示しています。
   MsgBox arr(i)

配列の中身を連結してまとめてメッセージボックスに表示する

順番に表示させるのではなく、配列の各要素に格納されているデータを連結して、メッセージボックスを1回だけ表示させたいという場合、以下のようなマクロが、まずは、わかりやすいでしょう。

Sub 配列の値をメッセージボックスに表示_2()

 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関数を使えば、配列の中身を連結することができます。

Sub 配列の値をメッセージボックスに表示_3()

 Dim arr(1 To 3) As String

 arr(1) = "東京"
 arr(2) = "大阪"
 arr(3) = "名古屋"

 MsgBox Join(arr)

End Sub

Join関数は配列の要素に格納されているデータを結合した文字列を返す関数です。

Join関数の第1引数には結合したいデータを含んだ1次元配列を、第2引数にはデータを結合するときにデータ間に入れたい区切り文字列を指定します。

第2引数を省略したときは、半角スペースが区切り文字として使われ、上記のマクロは、この例に該当します。

例えば、配列のデータを、例えば全角スペースを入れながら連結してメッセージボックスに表示するなら、上記のマクロの
  MsgBox Join(arr)
を、
  MsgBox Join(arr, " ")
に、改行を入れながら連結するのなら、
  MsgBox Join(arr, vbCrLf)
としてください。

最終更新日時:2019-01-31 12:23

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » 配列 » 配列の中身をMsgBox関数で表示する

「配列」の記事一覧

検索


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

.