スポンサーリンク

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


関連記事

管理人的EXCELのショートカット忘備録!沢山あって覚えられないので最低限で・・・!

なにやら最近【EXCEL】関連の本が売れている様です。 管理人も日々エクセルは使っています。 職場にいって、【WORD】と【EXCEL】を立ち上げない日は無いと言っても過言ではりません。 しかし、これ …

WORDのVBAでかなり悩んだ!ユーザーフォームのテキストボックスからワードに文字列を入力する方法!

へっぽこヘタレシステム管理者の管理人です。 さて、エクセルではマクロやVBAを弄ることは、たまにあるのですが・・・ 今回は、ワードでVBAを組んで、ユーザーフォームからワード本文にテキストを送信する方 …

EXCELのVBAを使って任意のファイルのフルパスを取得する!

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

バッチファイルでウエイト処理をする方法!コマンドプロンプト・Wait!

へっぽこヘタレシステム管理者の管理人です。 さて、モノ覚えが悪い管理人がよく忘れるコマンドで・・・ コマンドプロンプトやバッチファイルでウエイト処理を入れるというものがあります。 すぐに忘れるので忘備 …

EXCELのVBAを使ってDB【Oracle】に接続してSQLを叩く方法!

へっぽこヘタレシステム管理者の管理人です。 さて・・・ 長年、【Oracle】等のDBに接続してSQLを叩く場合は・・・ EXCELでのやり方が分からず・・・ ず~っとMS-ACCESSを使っていまし …

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