今朝から私はVBA(Excel 2003)で奇妙な動作を経験しています。ここでコレクションには文字列が格納されません
コードです:今
Sub TestCollection()
Dim i As Single, col As New Collection
Dim vArr(1 To 3) As String
'For i = LBound(vArr) To UBound(vArr)
' vArr(i) = Sheets("Sheet2").Cells(1, i)
'Next i
vArr(1) = "String 1"
vArr(2) = "String 2"
vArr(3) = "String 3"
For i = LBound(vArr) To UBound(vArr)
Debug.Print vArr(i)
col.Add i, vArr(i)
Debug.Print col(i)
Next i
End Sub
、私は私のコレクションは、(例えばローカルウィンドウ内)のような項目/キーのペアで満たされることを期待したい:
Item 1 -> "String 1"
Item 2 -> "String 2"
Item 3 -> "String 3"
残念ながら私
Item 1 -> 1
Item 2 -> 2
Item 3 -> 3
誰もがコレクションに文字列を保存しない理由を誰かが知っていますかキー値として?
おかげhuel、私は本当にここで何かを見逃しているかもしれません... 'col.Add vArr(i)'は実際に動作しますが、インデックス番号を 'i'で制御したいと思っていました。この例は、最後のコードサンプルの[link](http://www.dailydoseofexcel.com/archives/2011/12/26/populating-class-properties/)にあります: 'With tbl.HeaderRowRange: For i = 1 To .Count:col.Add i、.Columns(i):Next:End With ' – Davide
リンク@Davideをありがとう。列インデックスを参照するキーとして列ヘッダーを使用しているようです。私の最初のコードブロックでは、 'col.Add vArr(i)、CStr(i)'を使用しました。列インデックスをキーとして使用することができます(文字列に変換した後)。これはあなたが望むものに近いでしょうか? – huel
私は何をしようとしていたのか、同じコードが昨日働いていることを誓うことができます。残念ながら、String値が分かっているので、列ヘッダーが必要ですが、列の位置が変わることがあります。対応するキーを使用してコレクションインデックスを取得する他の方法?これまでの助けてくれてありがとう。 – Davide