【发布时间】:2019-12-16 19:42:45
【问题描述】:
我正在尝试动态创建特定长度的arrays,以便我可以在更大的过程中使用它们。
样本数据:
使用Dictionary 的以下代码为我提供了数据中的计数和唯一文件扩展名。
代码:
Dim dict As New Scripting.Dictionary
For Each cel In Range("B1:B8")
I = 1
If Not dict.Exists(cel.Text) Then
dict.Add cel.Text, I
Else
temp = dict(cel.Text) + 1
dict.Remove cel.Text
dict.Add cel.Text, temp
End If
Next cel
For Each varKey In dict.Keys
Debug.Print varKey & ":" & dict.Item(varKey)
Next
结果:
我要做的是创建 3 个(在此示例中)数组 pdf(4),xlsx(3),docm(1)
使用字典中的结果。
但是Dim varkey(dict.Item(varKey)) As Variant 行给了我编译错误。
需要常量表达式
有办法吗?我在谷歌上搜索了实现这一目标的方法,但没有运气。
基本上我想要的是使用这些不同的扩展名来声明数组。但是这些扩展名会有所不同,所以我需要动态声明它们。数组应与扩展名相同。
所以从工作表或字典中选择名称并将其声明为指定长度的数组。长度也可以在之后重新调整,但主要问题是从变量中声明它们。
【问题讨论】:
-
为什么不使用
ReDim? -
不能动态声明变量。
Dim语句不可执行。这就是为什么这听起来像是 X-Y 问题。 -
这是你正在尝试的吗? 1.
Dim varkey As Variant2.Dim n as Long: n=Val(dict.Item(varKey))3.Redim varkey(n) -
@SiddharthRout .. 这就是我想要做的。但这里 varkey 也是一个变量。鉴于 BigBen 的回答,也许这是不可能的
-
集合字典可能是您正在寻找的。数组字典也是可以的,但是加入字典后修改数组效率不高。
标签: arrays excel vba dictionary