最不动脑子的方法,直接写一个函数用错误陷阱捕捉就可以了
判断某个数组是否已经定义了下标,如果已经定义返回true
Function IsRedim(ByRef v As Variant) As Boolean
Dim i As Long
On Error GoTo IsRedim_Err
i = UBound(v)
IsRedim = True
Exit Function
IsRedim_Err:
Select Case Err.Number
Case 0
Case 9
Debug.Print Err.Number, Err.Description, "预定义错误"
Case Else
Debug.Print Err.Number, Err.Description
End Select
End Function
'在模块中运行,以下过程测试IsRedim函数的效果
Function RunTest()
Dim a() As String
Dim b() As String
ReDim a(5)
Debug.Print IsRedim(a) '返回true
Debug.Print IsRedim(b) '返回false
End Function
或者 用not逻辑符也可以判断
Function RunTest()
Dim a() As String
Dim b() As String
ReDim a(5)
Debug.Print Not a '返回 -48665169 ,不是 -1
Debug.Print Not b '返回 -1 表示其未指定下标
End Function