この記事を読むのに必要な時間は約 4 分です。
VBAで配列を使うことってありますよね。
単純に値を格納する方法以外に、ある関数を使って入れることができます。
複数の値を一度に格納出来て便利なので、もしも知らない場合はぜひ参考にしてみてくださいね。
VBAで、配列に直接値を格納する
配列に直接値を入れるなら、
1 |
配列(1) = "値" |
のように書きます。
サンプルプログラムはこんな感じ。
直接格納するので、あえて次のように書いていますが、For文などでループさせて値を入れることが多いです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Public Sub testArray1() Dim sArray(2) As String sArray(0) = "ああ" sArray(1) = "いい" sArray(2) = "うう" Sheet1.Cells(1, 1) = sArray(0) Sheet1.Cells(2, 1) = sArray(1) Sheet1.Cells(3, 1) = sArray(2) End Sub |
実行すると、下図のように配列に格納されている値がセルに入りました。
VBAで、Arrayを使って配列に値を格納する
Arrayを使うと、1度でまとめて格納できます。
ここで注意したいのは、Variant型で宣言すること。
格納する中身の値はString型ですが、As String としてしまうと「型が一致しません。」のエラーになります。
なのでVariant型で宣言する必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 |
Public Sub testArray2() Dim vArray() As Variant vArray() = Array("かかか", "ききき", "くくく", "けけけ") Sheet1.Cells(11, 1) = vArray(0) Sheet1.Cells(12, 1) = vArray(1) Sheet1.Cells(13, 1) = vArray(2) Sheet1.Cells(14, 1) = vArray(3) End Sub |
実行してみると、配列に格納された値が次のようにセルに入ります。
VBAで、Split関数を使って値を格納する
Split関数を使って配列に値を格納する方法です。
とても便利なので、ぜひ知っておいてほしいやり方の1つです。
カンマ区切りのデータであるCSV、タブ区切りのデータであるTSVなど、いろんなデータがありますよね。
1行ずつ読み取って処理するとき、Split関数で区切り文字を指定してVariant型の変数に入れると、サクッと配列に格納することができるんです!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Public Sub testArray3() Dim vArray As Variant Dim sCSVstring As String sCSVstring = "ささささ,しししし,すすすす,せせせせ,そそそそ" vArray = Split(sCSVstring, ",") Sheet1.Cells(21, 1) = vArray(0) Sheet1.Cells(22, 1) = vArray(1) Sheet1.Cells(23, 1) = vArray(2) Sheet1.Cells(24, 1) = vArray(3) Sheet1.Cells(25, 1) = vArray(4) End Sub |
実行すると、下図のように配列の値がセルに格納されます。
まとめ:VBAで配列に値を格納する方法3つ
VBAで配列に値を格納する方法を紹介してきました。
単純に値を格納する以外に、Array関数、Split関数を使う方法もあると知ってほしかったわけです。
CSVやTSVのデータを配列に入れるなら、Split関数は非常に便利で、初めて知った時は感動しました(笑)
配列の使い方、参考になればと思います。
最後までお読みいただき、ありがとうございました。
I blog often and I seriously thank you for your content.
Your article has truly peaked my interest.
I will bookmark your website and keep checking for new information about once a
week. I subscribed to your RSS feed as well.
Thanks your comment and to subscrib RSS feed.
I blog often too.
Please look forward to it.
Currently it seems like WordPress is the top blogging platform available
right now. (from what I’ve read) Is that what you’re using on your blog?
Thank you for your comment.
I’m using WordPress on my blog,it is provided by some rental server service.