我有通過字典循環的代碼。字典中每個鍵的值是一個2項數組(字典看起來像名稱:[字符串,整數])。 當我稍後參考字典時,我可以看到並打印屬於字典條目的數組中的字符串和整數,但我無法通過字典(name)(2)= 5;在代碼中這樣做後,我將數組值打印到調試文件中,並且數組值是原始值,而不是其更改的值。我不知道爲什麼這不起作用,我怎麼才能使它工作。我在數組上讀到的所有內容都表明你只需分配array(0)= something。Excel VBA:無法重新分配數組值
這裏是下面的代碼的一部分:
定義原來詞典:
dim Dict as Object
Set Dict = CreateObject("Scripting.Dictionary")
for i = 1 to 10
strnum = "str"&i
Dict.Add strnum, array("str"&i+1,0)
next
'printing each item in dict returns "Str1: [str2,0]", etc. as it should
與字典工作:
For each Cell in Range("a1:a11")
If Cell.Value <> "" And Dict.exists(Cell.Value) Then
name = Cell.Value
range = Dict(name)(0)
If Dict(name)(1) = 1 Then
'we have already located the name here
Else
Dict(name)(1) = 1
s = "Setting the found flag to " & Dict(name)(1)
debug.print s
'Dict(name)(1) returns 0 when it should return 1
end if
end if
next cell
範圍A1:A11是STR1,STR2,STR3 ,STR4,STR5 ... Str11。
我能做些什麼來解決這個問題?
代碼段中的許多錯誤。 (例如 - 在'CreateObject'之前沒有'Set'並且在循環中使用'Add'會導致一個'鍵已經與value'錯誤相關聯)。請發佈實際有效並能可靠複製問題的代碼。 –
更新了代碼。它應該按照現在的規定工作(或不工作)。 – Metalgearmaycry
但'字符串'不是一個有效的VBA變量名稱 –