Dim codesArray() As Variant
...
If WorksheetExists(workSheetName) Then
...
Else
ReDim Preserve codesArray(UBound(codesArray) + 1) ' Error subscript
codesArray(UBound(codesArray)) = cell.Value
End If
Run Code Online (Sandbox Code Playgroud)
我不确定为什么会出现索引超出范围错误。
基本上每次找不到工作表名称时,我都想将其添加到数组中,然后最终让用户知道丢失的工作表的名称。
所以最好的员工丢失的工作表应该是 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6345 次 |
| 最近记录: |