Dim codesArray() As Variant
...
If WorksheetExists(workSheetName) Then
...
Else
ReDim Preserve codesArray(UBound(codesArray) + 1) ' Error subscript
codesArray(UBound(codesArray)) = cell.Value
End If
我不确定为什么会出现索引超出范围错误。
基本上每次找不到工作表名称时,我都想将其添加到数组中,然后最终让用户知道丢失的工作表的名称。
所以最好的员工会有 0 个缺失的工作表。最糟糕的是会错过他们所有人。
最佳答案
问题在于 UBound(codesArray)
.您不能调用UBound()
在尚未确定尺寸的数组上。
您可以使用错误处理来解决这种情况。抽象为一个可能有用的子:
Sub ExtendArray(A As Variant, Optional NewPlaces = 1, Optional LBase = 0)
On Error GoTo err_handler
ReDim Preserve A(LBound(A) To UBound(A) + NewPlaces)
Exit Sub
err_handler:
ReDim A(LBase To LBase + NewPlaces - 1)
End Sub
关于vba - 如何在 VBA 中动态调整数组的大小?我不断收到下标和索引问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45497415/