gpt4 book ai didi

vba - 按键修改值

转载 作者:行者123 更新时间:2023-12-04 06:47:37 26 4
gpt4 key购买 nike

Dim dFeat As Collection
Set dFeat = New Collection

Dim cObj As Collection
Set cObj = New Collection
cObj.Add 3, "PASSED"
cObj.Add 4, "TOTAL"
dFeat.Add cObj, "M1"

Set cObj = New Collection
cObj.Add 5, "PASSED"
cObj.Add 6, "TOTAL"
dFeat.Add cObj, "M2"

dFeat("M1")("TOTAL") = 88 ' Error here
Debug.Print dFeat("M1")("TOTAL")

如何使用键修改内部集合的值?

最佳答案

Alex K. 关于使用 Dictionary 的建议是正确的,但我认为这里的问题比他的回答更笼统。一个 Collection键(或就此而言的索引位置)仅适用于阅读,不适用于写作。

所以在这一行:

dFeat("M1")("TOTAL") = 88 ' Error here
dFeat("M1")很好。它返回 Collection您添加了键“M1”。发生错误是因为您尝试直接分配给该集合的元素。一般来说,如果 cCollection , c("TOTAL") (或 c(2) )不能是左值。

正如 Alek K. 所说,解决此问题的最佳方法是使用 Dictionary对于内部“集合”,或内部和外部。以下是将一个用于内部的外观:
Dim d As Dictionary
Set d = New Dictionary

d("PASSED") = 3
d("TOTAL") = 4

dFeat.Add d, "M1"

然后这一行:
dFeat("M1")("TOTAL") = 88 

会起作用,因为 dFeat("M1")("TOTAL")是一个有效的左值。

如果由于某种原因您不能或不想包含 MS Scripting Runtime,则必须用以下内容替换失败的行:
Dim c As Collection
Set c = dFeat("M1")

Call c.Remove("TOTAL")
Call c.Add(88, "TOTAL")

或更简洁地说:
Call dFeat("M1").Remove("TOTAL")
Call dFeat("M1").Add(88, "TOTAL")

然后,您可以读取 dFeat("M1")("TOTAL") 的值,但您仍然无法分配给它。

关于vba - 按键修改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5709444/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com