【发布时间】:2016-08-02 16:46:11
【问题描述】:
如果满足某些条件,我有创建一个数组并在数组中输入“供应商名称”或“null”(实际字符串 null)的代码。如果不满足某些条件,则数组将不会填充任何数据,因此为空(或者我相信)。
接下来我要做的是仅打印出该数组中列出的供应商名称。因此,我必须创建一个 If 语句,该语句仅在数组中的项目不具有值“null”且数组不为空时输入。
我在下面的代码中遇到了以下问题。字符串数组supplierCategoryP(r) 不满足条件,因此从未填充任何信息。所以我假设这是一个空数组。然而,当我调试时,代码显示仍然输入了第一个If:
If supplierCategoryP(r) <> "null" And Not IsEmpty(supplierCategoryP(r)) Then
...虽然不应该,因为数组是空的。
k = 1
If countNoNull > 0 Then
moveDownBy = countNoNull
For r = 1 To nP
If supplierCategoryP(r) <> "null" And Not IsEmpty(supplierCategoryP(r)) Then
Cells(9 + k + moveDownBy, 5) = supplierCategoryP(r)
k = k + 1
countNoNull = countNoNull + 1
End If
Next r
Else
For r = 1 To nP
If supplierCategoryP(r) <> "null" And Not IsEmpty(supplierCategoryP(r)) Then
Cells(9 + k, 5) = supplierCategoryP(r)
k = k + 1
countNoNull = countNoNull + 1
End If
Next r
End If
创建数组的代码:
Worksheets("PEMCO").Activate
comNO = CLng(Range("commoditiesAmount").Text)
nP = CLng(Range("supplierAmount").Text)
ReDim supplierCategoryP(1 To nP) As String
For c = 1 To comNO
commodityLoop = Cells(3, 1 + c)
If commodity = commodityLoop Then
For r = 1 To nP
cellX = Cells(3 + r, 1 + c)
If cellX = "x" Then
supplierCategoryP(r) = Cells(3 + r, 1)
Else
supplierCategoryP(r) = "null"
End If
Next r
End If
Next c
【问题讨论】:
-
是字符串数组吗?来自this SO thread,你可以试试
If Len(Join(yourArrayList)) > 0 Then -
我相信没有内置功能。您将必须创建一个遍历数组的函数并检查
"null"的存在 -
如果要检查数组元素(不是数组)是否为空,则使用
Not IsEmpty(supplierCategoryCS(r))。见IsEmpty。 -
如果你想测试整个数组是否为空,那为什么还要进入
For循环呢?那么这个条件就错了。 -
@trincot,我很抱歉,我意识到调试时实际错误发生在哪里,并且能够更好地解释问题。请查看已编辑的问题。