その他関連のテクニック

連想配列を使う

(Excel 97/2000/2002/2003/2007)
一般的な配列は、添え字に数値を使います。

Sub Sample1()
  Dim Member(1 To 4) As String, i As Long
  Member(1) = "tainaka"
  Member(2) = "akiyama"
  Member(3) = "kotobuki"
  Member(4) = "hirasawa"
  For I = 1 To 4
    Cells(I, 1) = Member(i)
  Next I
End Sub   
このような配列では、要素を操作するとき、要素を表す数値を指定します。 そうではなく、文字列の要素を、文字列の添え字で操作するような配列を連想配列と呼びます。 たとえば、都道府県名と県庁所在地のような関係です。 各県庁所在地が格納されている配列に対して、 県庁所在地("東京都") → "新宿区" 県庁所在地("神奈川県") → "横浜市" のように操作できる配列です。 連想配列は、C++やJava、.NET Frameworkなど、多くのプログラミング言語で使用できます。 もちろん、VBAも標準で連想配列をサポートしています。 それが、Collectionオブジェクトです。 ここでは、次のような連想配列を考えてみましょう。
Sub Sample2()
  Dim Member As New Collection
  Member.Add "田中", "S001"
  Member.Add "鈴木", "S002"
  Member.Add "山田", "S003"
  MsgBox "S002は" & Member("S002") & "です"
End Sub   
連想配列(ここではMember)に要素を登録するには、Addメソッドを使います。 連想配列.Add 要素, キー 配列を操作するときは、添え字に"キー"を指定します。 要素の登録時には、ほかの要素と同じ"キー"は指定できません。 Excel VBAでは、このCollectionオブジェクトはあまり使われていません。 なぜなら、このように文字列で配列を検索するやり方を、多くのExcelユーザーはいつも、ごく普通に行っているからです。ワークシート上のVLOOKUP関数で。 配列の要素とキーをワークシート上に展開しておけば、手動操作はもちろんVBAからでも自由に操作できます。 Excel VBAは、他のプログラミング言語にはないセルとワークシートという素晴らしい機能を標準で使用できます。 とはいえ、Collectionオブジェクトを使った連想配列を使えると、CSVなど外部のデータを配列データとして活用するときに便利です。 たとえば、 S001,田中 S002,鈴木 S003,山田 というCSVファイルがあったとします。名前は「C:\Data.csv」としましょう。 このCSVデータを、先のSample2と同じような連想配列として操作するには次のようにします。
Sub Sample3()
  Dim Member As New Collection, buf As String
  Open "C:\Data.csv" For Input As #1
    Do Until EOF(1)
      Line Input #1, buf
      Member.Add Split(buf, ",")(1), Split(buf, ",")(0)
    Loop
  Close #1
  buf = InputBox("社員番号は?")
  If buf = "" Then Exit Sub
  On Error Resume Next
  MsgBox buf & "は" & Member(buf) & "です"
  If Err.Number > 0 Then MsgBox buf & "の社員はいません"
End Sub   
存在しないキーを指定するとエラーが発生します。 上のコードでは、On Error Resume Nextで連想配列の検索時に発生するエラーを無視していますので、存在するキーが指定されたときは1つめのMsgBoxが実行され、エラーが発生したときは2つめのMsgBoxが表示されます。 覚えておくと、何かのときに役立つかもしれないテクニックです。