vba - 调整数组内的数组大小
问题描述
我有一个带有键:值对的 VBA 字典。键是动物名称,值是如下所示的数组数组:[[吃掉的公斤数],获得的公斤数]]。我正在尝试调整内部数组的大小,以便可以通过循环将项目添加到这些数组中。文档指出“要调整 Variant 中包含的数组的大小,您必须在尝试调整其数组大小之前显式声明 Variant 变量。” 我在代码的前面已经完成了这个,但我仍然有一个语法错误。
With animalDict
'Check if the animal is already in the dict
'If not, create a key:value entry that is equal to (animal name):[[kilos eaten],[kilos gained]]
If Not .Exists(animalName) Then
ReDim kilosEatenArr(0)
ReDim kilosGainedArr(0)
ReDim outerArr(1)
kilosEatenArr(0) = kilosEatenCount
kilosGainedArr(0) = kilosGainedCount
outerArr(0) = kilosEatenArr
outerArr(1) = kilosGainedArr
.Add Key:=animalName, Item:=outerArr
Else
outerArr = .Item(animalName)
ReDim Preserve outerArr(0)(LBound(outerArr(0)) To UBound(outerArr(0)) + 1) 'Sytnax error here
ReDim Preserve outerArr(1)(LBound(outerArr(1)) To UBound(outerArr(1)) + 1) 'Another sytnax error here
kilosEatenArr(UBound(kilosEatenArr)) = kilosEatenCount
kilosGainedArr(UBound(kilosGainedArr)) = kilosGainedCount
outerArr(0) = kilosEatenArr
outerArr(1) = kilosGainedArr
animalDict(animalName) = outerArr
End If
End With
解决方案
@Warcupine 是正确的。您必须将数组从字典中拉出,重新调整它,设置该索引的值,然后将其添加回字典。
我没有对此进行测试,但它应该可以工作:
If Not .Exists(animalName) Then
ReDim kilosEatenArr(0)
ReDim kilosGainedArr(0)
kilosEatenArr(0) = kilosEatenCount
kilosGainedArr(0) = kilosGainedCount
outerArr = Array(kilosEatenArr(0),kilosGainedArr(0))
animalDict(animalName) = outerArr 'implict adds are faster
Else
outerArr = animalDict(animalName)
kilosEatenArr = outerArr(0)
kilosGainedArr = outerArr(1)
ReDim Preserve kilosEatenArr(LBound(kilosEatenArr) To UBound(kilosEatenArr) + 1)
ReDim Preserve kilosGainedArr(LBound(kilosGainedArr) To UBound(kilosGainedArr) + 1)
kilosEatenArr(UBound(kilosEatenArr)) = kilosEatenCount
kilosGainedArr(UBound(kilosGainedArr)) = kilosGainedCount
outerArr = Array(kilosEatenArr, kilosGainedArr)
animalDict(animalName) = outerArr
End If
Erase outerArr
Erase kilosEatenArr
Erase kilosGainedArr
推荐阅读
- java - 与 Google Play 服务不兼容且 Firebase 版本无法正常工作
- ios - 带有 UITableView 的 contentView 不在 UIScrollView 内滚动
- swift - 如何不断查询最近的用户?
- node.js - 错误:尝试使用 Windows Powershell 创建新的 Angular 项目时,“操作被您的操作系统拒绝”
- arrays - 计算四个数组中的非零非 NaN
- python - 用Python中的另一个字符替换字符串中的多个字符
- eclipse - 在哪里可以找到 Hello World 示例插件项目的核心 Eclipse 插件?
- visual-studio - 无法通过 VSIX 或扩展安装 blazor
- javascript - 在sqlite中获取总和在javascript中返回未定义
- python-3.x - 根据数据框的其他列计算列的总和?