我是excel VBA的新手。 以下是我的代码。它总是抛出运行时错误。我试图用我的全部努力来解决它。 谁能救我的命? 我感谢任何回应。
Function GetUniqueAndCount()
Dim sheet As Worksheet
Set sheet = ActiveSheet
Dim index As Integer
Dim componentList() As String
Dim typeList() As String
Dim temp() As String
Dim arraySize As Integer
Dim row As Integer
Dim iVal As Integer
Dim horizontal, vertical, borderString As String
row = 1
Do Until Application.CountA(sheet.Rows(row)) = 0
temp = Filter(typeList, Cells(row, 3))
On Error GoTo EMPTY_ARRAY:
If (UBound(temp) = -1 And Cells(row, 3) <> vbstringnull) Then
ReDim Preserve componentList(index)
ReDim Preserve typeList(index)
componentList(index) = Cells(row, 2)
typeList(index) = Cells(row, 3)
arraySize = arraySize + 1
index = index + 1
End If
EMPTY_ARRAY:
Erase temp()
row = row + 1
Loop
End function
答案 0 :(得分:0)
temp = Filter(typeList, Cells(row, 3))
typeList
是第一次迭代中未初始化的数组,如果将这样的数组传递给filter()
,则不会返回任何数组,因此temp
保持未初始化状态,因此UBound(temp)
是非法的。
重新typeList
后,您会按预期返回-1
。
在尝试将其用作typeList
filter()
同时删除On Error
并修复导致该情况的原因,如果不是上述情况。