重複排除して二次元配列を作る(Dictionary版)

Q&Aで割とよくある質問で、シートにあるデータから重複を排除してリストボックス(あるいはコンボボックス)に入れたいってのがあります。
データが1列しかない場合は割と素直にできるのですが、2列以上となるとちょっちメンドクサイです。
 
方法はいくつかありますが、やはり二次元配列にデータを入れて、ListプロパティまたはColumnプロパティに突っ込むのがスマートな気がします。
重複排除の判定には、Dictionary に 同一キーでAddするとエラーになるってのを今回は利用することにします。
 

例えば、図のようなデータがシートにあり、A列がユニークな行について、A,B列のデータを二次元配列に入れる場合を考えてみます。
※.A列は数値です。

' 参照設定:Microsoft Scripting Runtime

Sub Macro1()
  Dim dicA As Scripting.Dictionary
  Dim rngU As Range
  Dim r As Range
  Dim i As Long
  Dim aryX() As String

  Set dicA = New Scripting.Dictionary
  Set rngU = Worksheets("Sheet1").Range("A2:A8")

  On Error Resume Next
  For Each r In rngU
    Err.Clear
    ' ◆◇◆◇◆◇◆◇◆◇
    dicA.Add Key:=r, Item:=Empty ' NG
    'dicA.Add Key:=r.Value, Item:=Empty ' OK
    ' ◆◇◆◇◆◇◆◇◆◇
    If Err.Number = 0 Then
      i = i + 1
      ReDim Preserve aryX(1 To 2, 1 To i) As String
      aryX(1, i) = r.Text
      aryX(2, i) = r.Offset(, 1).Text
      Debug.Print aryX(1, i), aryX(2, i), i
    End If
  Next r
  On Error GoTo 0
End Sub

実行すれば分かりますが、実はこのコードの結果は要件を満たしません。
重複が排除されないのです。
 
◆◇◆で印を付けた部分がNGです。
後ろにコメントアウトしたコードのようにすればOKです。
つまり、Valueプロパティを省略してはイケナイってことです。
 
これも、デフォルトプロパティを省略することによる不具合ですね。
省略による不具合は他にもあるので、よく知っている人は省略しないでしょうけど。
 
Excel 2002 で実験)
 
※.Excel World の 2007年7月16日 17:25 の日記をコピーしています。
http://excel.sns.fc2.com/excel/