【发布时间】:2018-04-05 11:43:58
【问题描述】:
有没有一种简单的方法来实现一个循环,直到多维数组中的每个值都不是每个类型的“空” - 所以循环直到字符串数组被非空字符串的值填充,等等。
我要做的伪代码示例:
Dim MultiArray(100,100) As String
Do Until MultiArray(0,0) To MultiArray (100,100) Is Not = ""
'Operations
Loop
【问题讨论】:
-
在您进入循环之前,您的数组的每个维度的上限和下限都将是已知的。一个数组永远不会是“空的”或“满的”——要么它被初始化,要么它没有被初始化。 FWIW 这不是在 VBA 中使用
Null的方式。 -
感谢 Mat's Mug,我的意思是数组是否填充了任何内容或填充了任何实际值。如果我将 Do until MultiArray(0,0) To MultiArray (100,100) = "" 写出来,可能会更好。更改以反映这一点。
-
它总是“充满值”——如果你已经初始化了一个数组,那么该数组的每个单元格都包含数组类型的默认值。例如
Dim foo(1 To 10) As String创建一个包含 10 个空字符串的数组。Dim foo(1 To 10) As Long创建一个包含 10 个0值的数组,因为0是Long变量初始化的对象。一个Variant数组用vbEmpty值初始化,一个对象数组用Nothing对象引用初始化,等等。您的问题(并查看其答案)与数组的内容完全无关。 -
那么隐含的意图是循环直到没有空字符串、没有 0 值或没有 vbEmpty 值,具体取决于数组类型。它确实与内容有关,我希望当内容不再是空字符串、0 值或 vbEmpty 时停止循环,具体取决于类型。
-
同意,我只是重新阅读了答案,不得不取消选中它。但是由于您对我所说的话的误解,它不值得被否决。如果需要,我可以更清楚地说明,现在会这样做。我很清楚我的目标是什么,现在仍然如此。我会澄清这个帖子。
标签: vba excel loops multidimensional-array