我有创建数组并在给定条件下输入“供应商名称”或“空值”(实际字符串null)的代码得到满足。如果某些条件不符合,数组将不会被填充任何数据,因此是空的(或者我相信)。VBA - 只有在数组非空的情况下运行if语句,即使数组为空时仍然运行,
我想要做的下一件事是打印出只列出该数组中列出的供应商名称。因此,我必须创建一个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
它是一个字符串数组吗?从[这个SO线程](http://stackoverflow.com/a/206526/4650297),你可以尝试'如果Len(Join(yourArrayList))> 0然后' – BruceWayne
我相信没有内置函数。你将不得不创建一个遍历数组的函数,并检查'null'的precense' – litelite
如果你想检查Array *元素*(不是数组)是否为空,那么使用'Not IsEmpty(supplierCategoryCS (R))'。请参阅[IsEmpty](https://msdn.microsoft.com/en-us/library/office/gg264227.aspx)。 – trincot