gpt4 book ai didi

arrays - Redim VBA 中的可变维数

转载 作者:行者123 更新时间:2023-12-02 06:44:47 25 4
gpt4 key购买 nike

我在 Excel 宏 (VBA) 中有一个情况,我想对一个数组进行维度标注,其中维度数和每个维度的边界在运行时确定。我让用户通过为每个选项类型创建一列并填写下面的可能性来指定一系列组合选项。列数和选项数在运行时通过检查工作表来确定。

一些代码需要运行每个组合(每列中的一个选择),我想将结果存储在多维数组中。

维度数可能在 2 到 6 之间,所以如果有必要的话,我总是可以退回到一堆 if else block ,但感觉应该有更好的方法。

我认为如果我可以在运行时将 Redim 语句构造为字符串并执行该字符串,那么这是可能的,但这似乎不可能。

有没有办法动态地Redim使用不同数量的维度?

最佳答案

我很确定没有办法在一个 ReDim 中做到这一点陈述。 Select Case可能比“一堆 If...Else block ”稍微整洁一些,但你仍然写出了很多单独的 ReDim s。

在 VBA 中使用数组(您事先不知道它们将具有多少维)有点 PITA - 以及 ReDim不是很灵活,也没有一种巧妙的方法来测试数组以查看它有多少个维度(您必须循环尝试访问更高的维度并捕获错误,或者在底层内存结构中进行修改 - see this question ) 。因此,您需要跟踪维度数,并写长 Case每次您需要访问数组时也需要声明,因为语法会有所不同。

我建议创建您认为需要的最大维数的数组,然后将任何未使用的维度中的元素数量设置为 1 - 这样每次访问该数组时您总是具有相同的语法,如果需要,您可以使用 UBound() 检查这一点。这是 Excel 开发人员自己针对 Range.Value 采取的方法。属性 - 即使对于一维 Range 也总是返回一个二维数组.

关于arrays - Redim VBA 中的可变维数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31285020/

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