excel - 动态数组中何时需要 ReDim?
问题描述
我有一个关于 ReDim-ming 动态数组的简短问题 - 更准确地说,在哪些情况下需要它?
我知道ReDim Preserve array(x) As Variant
在向数组中添加条目时需要这样做。调整/更改数组中的现有信息效果很好,例如:array(x) = "Added text " & array(x)
但是在处理动态数组时,是否还有其他情况需要担心 ReDim 甚至其他特殊要求?
我正在编写一个代码,其中将包含大型动态数组,这些数组在 For-looping 将日期写入另一张纸上的列表之前从许多不同的来源添加数据。我不能让将来出现错误,因为我错过了一些东西。
解决方案
ReDim
用于改变数组的大小。您可以ReDim
像这样未初始化的数组:
Dim arr() As Variant
x = 200
ReDim arr(1 to x)
您也可以在初始化的数组上执行此操作:
Dim arr(1 to 2) As Variant
ReDim arr(1 to 5)
<-- 将删除以前存储的值
ReDim Preserve arr(1 to 5)
<-- 将保留以前存储的值
请注意,使用 Preserve
只会更改多维数组的最后一个维度,因此Dim arr(1 to 5, 1 to 2)
如果要保留数据ReDim Preserve
,只能将第二个维度从 更改1 to 2
为1 to x
。
就像汤姆说的那样,在每个循环中更改数组的大小都会影响性能,因此您应该首先计算数组的最大大小,然后对其进行标注,或者将大小调整为超出您需要的大小,最后根据您的需要重新调整当你结束时。
推荐阅读
- python - 如何将场景中的 QGraphicsItems 绘制到 QImage 上而不在 QGraphicsScene 中更改它们?
- python - 在 plone 中另一个项目的选择字段中列出创建项目的标题
- c++ - SFML,背景对象
- functional-programming - Spring Webflux 单声道
总是以成功的响应来响应 - typescript - Webpack 构建成功但缺少不可变导入?
- python - ValueError:负尺寸大小由 1 减去 2 导致的 'max_pooling3d_3/MaxPool3D'(op: 'MaxPool3D')输入形状 [?,1,60,60,128]
- python - pandas 按列值减法
- python - 如何使用 python 在 adb shell 中读写
- c# - 当我尝试转换为 (int?) 时,指定的转换无效
- csv - 无法查看 Hive 外部表中的任何数据,该表存储为 HDFS 中包含印地语字符的 ORC