苦手なEXCEL・VBAの配列・連想配列を試してみる!

スポンサーリンク
050-VBA

へっぽこヘタレシステム管理者の管理人です。

さて・・・

管理人は、素人レベル程度ですが、少しだけマクロを触れます。

しかし、ちょっと難しくなると手も足もでません。

その中でも【配列】や【連想配列】も超苦手なんですが、少しだけネットで調べて触ってみました。

配列

まずは配列です。

【X()】という配列の中に数字を格納してみます。

【X(5)】とすると【0~5】までの6つの数字が格納できます。

Sub test()

    Dim X(5) As Variant

        For i = 0 To 5 '5までOK

            X(i) = i * 10
            
        Next i
        
        
    For i = 0 To UBound(X)  '配列の全てまで

        Debug.Print X(i)

    Next i
        

End Sub

これを実行すると・・・

イミディトウインドウに次の数字が出力されます。

 0 
 10 
 20 
 30 
 40 
 50 

ちなみに【For i = 0 To UBound(X)】は、配列のインデックスの全てとなります。

試しに【For】の部分を【i=3 to 5】に変更すると・・・

        For i = 3 To 5




 30 
 40 
 50 

【0~3行】までは、空白が挿入されます。

配列のインデックス【0~2】番目には何も挿入されないようです。

【X(i)】

スポンサーリンク

連想配列(Dictionary)

次は、連想配列です。

テーブルの様なイメージでしょうか?

(キー、アイテム1、アイテム2、アイテム3、・・・・)

と格納できます。

次のコードを実行してみると・・・

【Y】という連想配列に数値を格納できます。

Sub test1()
    
    
    Dim Y As Object
    Set Y = CreateObject("Scripting.Dictionary")
   
    
    For i = 1 To 5
        
        Y.Add i, i * 10
            
    Next i
    

    For i = 0 To Y.Count - 1 '配列の全てまで(配列は0スタートなので-1する)

       Debug.Print Y.keys()(i) & " " & Y.Items()(i)



    Next i
    
    Debug.Print Y.keys()(4)  '0から5番目のキー
    Debug.Print Y.Items()(4)  '0から5番目のアイテム
    
'    Debug.Print Y.Key(1) 'エラーになる
    Debug.Print Y.Item(5) 'キー番号のアイテム
    
    Set Y = Nothing
    

End Sub

イミディトウインドウに次のとおり出力されます。

1 10
2 20
3 30
4 40
5 50
 5 
 50 
 50 

配列同様にインデックスは【0】からスタートする様です。

この為、配列の中身を全てみる為には・・・

【 For i = 0 To Y.Count – 1 】

スポンサーリンク

のとおり【Y.count】から【-1】とします。

キーの中身を見るには・・・

【Y.kye()(i)】

ブログランキングにご協力ください!
ブログランキング・にほんブログ村へ

と記載し、配列のインデックス番号のキーを【debug.print】で出力できます。

アイテムの中身を見るには・・・

【Y.item()(i)】又は【Y.item(i)】

と記載します。

アイテムについては、

【Y.item()(i)】の場合は、配列のインデックス番号のアイテムを

【Y.item(i)】 の場合は、配列のキー番号のアイテムを

【debug.print】で出力できます。

こちらも、【For】の部分を【i=3 to 5】に変更すると・・・

 Sub test1()
    
    
    Dim Y As Object
    Set Y = CreateObject("Scripting.Dictionary")
    
    
    For i = 3 To 5
        
        Y.Add i, i * 10
            
    Next i
    

    For i = 0 To Y.Count - 1 '配列の全てまで(配列は0スタートなので-1する)

       Debug.Print Y.keys()(i) & " " & Y.Items()(i)



    Next i
    
    Debug.Print Y.keys()(2)  '0から3番目のキー
    Debug.Print Y.Items()(2)  '0から3番目のアイテム
    
    Debug.Print Y.Item(5) 'キー番号のアイテム
    
    Set Y = Nothing
    

End Sub

イミディトウインドウに次のとおり出力されます。

3 30
4 40
5 50
 5 
 50 
 50

配列と異なり、インデックスの【0】番目から数値が格納される様です。

ブログ開設に必要なドメイン取得、サーバーレンタル、ASPの登録等は、こちらのサイトから!

コメント

タイトルとURLをコピーしました