问题:
| 如何判断VBA中的一个数组是否已经定义其维数上限下限。 以下代码定义一个数组 Dim aryString() as String MsgBox UBound(aryString) |
用UBound取这个数组时会提示“运行时错误(9):下标越界。”,但是用 IsArray IsNull IsEmpty 都没有办法区分是否已经定义数组的维数,该如何判断某个数组是否已经定义下标呢? |
方法一:
| 最不动脑子的方法,直接写一个函数用错误陷阱捕捉就可以了 '判断某个数组是否已经定义了下标,如果已经定义返回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 逻辑符也可以判断 '在模块中运行,以下过程测试IsRedim函数的效果 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 |
|
本站文章旨在为该问题提供解决思路及关键性代码,并不能完成应该由网友自己完成的所有工作,请网友在仔细看文章并理解思路的基础上举一反三、灵活运用。
access911.net 原创文章,作者本人对文章保留一切权利。 如需转载必须征得作者同意并注明本站链接
|
|