スポンサーリンク

050-VBA

苦手なEXCEL・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の登録等は、こちらのサイトから!

スポンサーリンク
スポンサーリンク

-050-VBA

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

Access・アクセス・VBA・サブフォームを別のフォームから更新する方法!

へっぽこヘタレシステム管理人の管理者です。 アクセスでシステムを作っていると・・・ アクティブなフォームから別のフォームのサブフォームの内容を更新したい場合が出てきます。 別のフォーム全体を更新するコ …

EXCELのVBAを使ってPDFを開き指定のページのみを印刷する!

へっぽこヘタレシステム管理者の管理人です。 さて、昨日に引き続き・・・ ある部署からエクセルのマクロの作成を依頼され・・・ その過程で、いくつか部品を作ったので忘備録として掲載します。 スポンサーリン …

EXCELドロップダウンリストの連動!知っていると便利な機能!

へっぽこへたれシステム管理者の管理人です。 さて、久々のEXCELネタですが・・・ ドロップダウンリストの連動について忘備録として掲載します。 エクセルを使っていると、ドロップダウンリストよりデータを …

Windows10のサポート終了と職場のPCのリース終了期限がずれている問題!ieが使えないと使えなくなるシステムもあって困る!

へっぽこヘタレシステム管理者の管理人です。 さて管理人が勤務する役所は・・・ 地方の田舎ですので、財政状況も厳しい・・・ ということで、パソコンのリース期間も一般的な法定耐用年数よりも長めに設定されて …

投票事務・投票録等の書類作成を少しでも簡単にしたい!紙とエンピツと電卓での集計をエクセルを使って簡単にしたい!

超底辺地方公務員の管理人です。 さて、令和3年度の衆議院議員選挙もなんとか終わり・・・ これでようやく予算事務に専念できそうですが・・・ 既に締め切りが迫っており、かなりヤバイです。 間に合うか非常に …

スポンサーリンク
スポンサーリンク
スポンサーリンク