Access911.net   |   a9BBS   |   OTaA System  
  搜索文章:  
Access911欢迎您光临  
   主页      上传      繁體版       论坛     
设为首页  |  加入收藏   
  
你现在的位置:文章索引 -> 文章分类 -> VBA  
 首页|  近日更新|  下载  |  文章索引  |  搜索|  术语|  承接工程|  
 
系统正在加载内容,请耐心等待...
 
 查询
 窗体
 报表
 
 
 VBA
 函数
 ADO/DAO/ADO.NET
 API
 ADP
 安全
 发布
 OA
 ASP/ASP.NET
 其他语言
 控件
 DELPHI
 C#/.Net
 本站
 其他
 小例程
 常用软件
 参考文档
 业主作品
 网友大作
 
 
友情链接
 access911.net
 
访问人次
 1701870
 
站长 E-Mail
 net911@sina.com
 access911@gmail.com
 
RSS 订阅

显示附加信息 >>>

如何判断VBA中的一个数组是否已经定义其维数上限下限。

作者:cg1  摘自:access911.net  :cg1  更新日期:2010-6-4  浏览人次:

 

问题:

如何判断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 原创文章,作者本人对文章保留一切权利。
如需转载必须征得作者同意并注明本站链接

 

 
相关文章
     没有手动相关文章
     如何对一维数组或者二维数组进行排序?
     如何用我自己的错误提示替换ACCESS的默认提示?
     新手来看:为什么用ROUND四舍五入总是无法得到正确数值?
     外部驱动程序(8961)中的意外错误
     如何动态定义数组大小?
 
评论
     查看或发表更多的评论,请单击这里。
 
 
 
 
 
   
  Access911.net   |   a9BBS   |   OTaA System   |
建站日期:2000年4月2日  |  设计施工:陈格 ( access911 & cg1 )
 Copyright © 2000 - 2003 COMET, 陈格 保留所有权利