Excel VBA无法修复运行时错误' 9':下标超出范围

时间:2014-10-24 10:15:40

标签: excel vba excel-vba

我是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

1 个答案:

答案 0 :(得分:0)

temp = Filter(typeList, Cells(row, 3))

typeList是第一次迭代中未初始化的数组,如果将这样的数组传递给filter(),则不会返回任何数组,因此temp保持未初始化状态,因此UBound(temp)是非法的。

重新typeList后,您会按预期返回-1

在尝试将其用作typeList

的来源之前,先测试您已分配到filter()

同时删除On Error并修复导致该情况的原因,如果不是上述情况。