我有創建數組並在給定條件下輸入「供應商名稱」或「空值」(實際字符串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