У меня есть Scripting.Dictionary
, из которого я хочу присвоить значение первого ключа (т. е. 0-го элемента в массиве .Keys
) другой переменной.
Я не смог сделать это, не присвоив сначала значение массива Keys
другой переменной, а затем не получив доступ к элементу из этой другой переменной.
Как я могу сделать это за один шаг?
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
dict.Add Key: = "a", Item: = "A"
dict.Add Key: = "b", Item: = "B"
dict.Add Key: = "c", Item: = "C"
dict.Add Key: = "d", Item: = "D"
Dim tmp1
Dim tmp2 As String
tmp1 = dict.Keys
tmp2 = tmp1(0) 'This works
Dim tmp As String
tmp = dict.Keys(0) 'This does not work
в свойстве VBA "Scripting.Dictionary.keys" перенастройте массив, но вы не можете напрямую получить доступ к элементу этого массива с помощью "dict.Keys(0)", потому что ключи возвращают вариант, содержащий массив, и вам нужно явно ссылаться на него. этот массив
Dim tmp AS String
tmp = dict.Keys()(0)
Эта строка будет работать, если вы используете раннюю привязку (создав ссылку на Microsoft Scripting Runtime и используя
Set dict = New Scripting.Dictionary
). В противном случае вы можете использоватьtmp = dict.Keys()(0)
. Обратите внимание, что в цикле это будет слишком медленно. Также вы можете создать цикл:Dim Key As Variant: For Each Key In dict.Keys: tmp = Key: Exit For: Next Key
.