【发布时间】:2019-10-17 14:53:50
【问题描述】:
我有一个非常基本的问题。
上下文: 1)我有一列,其中每个单元格可能包含也可能不包含逗号分隔条目的列表。 2)我遍历每一行并用逗号分隔每个单元格并将其输入一个数组。 3) 然后我将每个元素的值写入数组中的另一个电子表格的新单元格中。
当我添加 array(0) 时,我的公式有效,因为总是有一个条目(尽管它并不总是用逗号与其他条目分隔)。
当我添加数组 (1) 时,我的公式有条件地起作用,因为在某些情况下,它会通过用逗号分割单元格并访问第二个条目来获得值。
但是,很多时候 array(1) 没有值并且我得到一个下标超出范围的错误。
如何有条件地检查我正在访问的数组元素何时没有值来避免这种情况?
我目前有类似的东西:
Workbook.Worksheets("name").Cells(x,y).Value = array(1)
我想做这样的事情:
If (IsEmpty(array(1))) Then
Workbook.Worksheets("name").Cells(x,y).Value = ""
Else
Workbook.Worksheets("name").Cells(x,y).Value = array(1)
但这也引发了下标错误。有什么建议吗?
【问题讨论】:
-
检查数组的
UBound。 -
如果数组为空,则
array(1)将(预期)抛出此错误。您需要检查数组是否有元素和/或已初始化。在大多数情况下,Ubound(array)会给你最大的索引。有一些极端情况 IIRC 需要一些特殊的解决方法来处理。 -
看 Ubound 有效!!谢谢!! :) 不相关的问题:我可以在答案中添加注释吗...?
-
否,但如果您愿意或提示他人写答案,您可以自行回答:)
-
嗯,你先回答了本,所以如果你想回答信用,请写下答案,我会这样标记:)。再次感谢!