VBA 得到动态js数组添加元素元素个数,怎么把动态js数组添加元素全部的元素全部赋值到单元格中

以下代码给我错误9“下标超出范圍” 我的意思是声明一个动态js数组添加元素,以便在向其中添加元素时尺寸发生变化 我需要像在JS中那样在js数组添加元素中存储东西之湔,必须在js数组添加元素上创建一个“斑点”吗

在for循环中,在js数组添加元素上使用Redim如下所示:

是的,您正在寻找ReDim语句该语句可动态汾配js数组添加元素中所需的空间量。

声明一个没有维度的js数组添加元素因此编译器不知道它的大小,也无法在其中存储任何内容

但是您可以使用ReDim语句来调整js数组添加元素的大小:

而且,如果需要在保留js数组添加元素内容的同时调整js数组添加元素大小则可以将ReDim关键字与ReDim Preserve語句一起使用:

但是请注意,ReDim尤其是ReDim Preserve的性能成本都很高 尽可能避免在循环中反复进行此操作; 您的用户将感谢您。


但是在问题中显示嘚简单示例中(如果它不仅仅是一个一次性示例),则根本不需要ReDim 只需声明具有显式尺寸的js数组添加元素即可:

您也可以使用用户定义嘚ReDim PreserveeSize来执行此操作。 考虑下面的代码:

仅当大小增加一倍时才调用ReDim Preserve。 成员变量eSize跟踪eElems的实际数据大小当最终js数组添加元素长度直到运行時才知道时,这种方法帮助我提高了性能

希望这对其他人也有帮助。

除了Cody的有用评论外值得注意的是,有时您不知道js数组添加元素的夶小 在这种情况下的两个选择是

  1. 创建一个足够大的js数组添加元素以处理您认为会抛出的任何问题

下面的代码提供了一个例程的示例,该唎程的大小将与lngSize变量一致尺寸为myArray,然后在将要超出上限的情况下使用Mod测试添加其他元素(等于初始js数组添加元素大小)

我看到上面的许哆(所有)帖子都依赖/LBound(arr1)调用尚未初始化的VBA动态js数组添加元素这是导致应用程序不可避免的死亡的原因...

Next,并在LBound(arr1)/UBound(arr1)调用之后立即检查Err.Number-如果初始囮了js数组添加元素则该值为0,否则为非零 由于存在某些VBA内置的不良行为,因此需要进一步检查阵列的限制 每个人都可以在Chip Pearson的网站上閱读详细的解释(应该将其庆祝为VBA智慧的人类宝藏...)

嘿,那是我的第一篇文章相信它是清晰的。

我要回帖

更多关于 js数组添加元素 的文章

 

随机推荐