-1为判断数组为空的唯一条件吗? 判断数组为空用了isNull,isEmpty,isArray结果都不对.在网上找了后,只有UBound(数组)=-1的答案.问UBound(数组)=-1是判断空数组的唯一条件吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 关键是你所谓的"数组为空"的意思是什么?你指的是数组没有被赋过值?还是指动态数组没有被REDIM初始化过? lsgg = Ent.IntersectWith(Ent1, acExtendNone)是AutoCAD的直线相交的关键语句.如果相交,lsgg为数组ubound=2如果不相交,lsgg在本地窗口提示为无变量------------用ubound(lsgg)=-1为真可以达到目的.IsNull,IsEmpty,IsArray均不行. 如果数组未初始化,使用UBOUND貌似会出错吧.捕捉一下就OK. SafeArrayGetDim用来判断一个数组的维数,该函数在MSDN中定义为:UINT SafeArrayGetDim( SAFEARRAY FAR* psa );转换维VB中的语法格式为:Public Declare Function SafeArrayGetDim Lib "oleaut32.dll" (ByRef saArray() As Any) As Long如果数组已经初始化,则返回非0,否则返回0。'API判断数组为空或没有初始化 Sub diag()Dim msg As StringDim arr1() As String, arr2() As String, arr3() As Date, arr4() As Date, arr5() As Range, arr6() As Rangemsg = "arr1 " & IIf(SafeArrayGetDim(arr1) > 0, "数组不为空!", "数组为空!")arr2 = Split("一、二、三、四、五、六", "、")msg = msg & vbCrLf & "arr2 " & IIf(SafeArrayGetDim(arr2) > 0, "数组不为空!", "数组为空!")msg = msg & vbCrLf & "arr3 " & IIf(SafeArrayGetDim(arr3) > 0, "数组不为空!", "数组为空!")ReDim arr4(1 To 100)msg = msg & vbCrLf & "arr4 " & IIf(SafeArrayGetDim(arr4) > 0, "数组不为空!", "数组为空!")ReDim arr6(1 To 256, 1 To 65536)msg = msg & vbCrLf & "arr5 " & IIf(SafeArrayGetDim(arr5) > 0, "数组不为空!", "数组为空!")msg = msg & vbCrLf & "arr6 " & IIf(SafeArrayGetDim(arr6) > 0, "数组不为空!", "数组为空!")MsgBox msgEnd Sub 未初始化时使用Lbound或ubound会出错。就利用这种方法定义一个函数捕获出错就是空数组。 大家看看这段程序有什么问题? 求高手帮看下,想取得两字符之间的文字,这个正则表达式怎么不管用? 请问如何压缩JPG图片? 愿出人民币购买解决方案!!!! 如何使一个bmp图由24bit的变成2色的黑白图,多谢了! 送分了! 哪里有MS Visual Studio 6.0下载? 看kodak图像缩略图ImgThumbnail例子问题,高分等待,解决问题200分 vb做的控件,编译成.dll以后不能运行。 帮帮我啊,我要零级的操作权!! 从MSFlexGrid控件把数据导入到excel,请问怎么才能让导入到EXCEL里的数字为数字形式?? 下划线问题
如果相交,lsgg为数组ubound=2
如果不相交,lsgg在本地窗口提示为无变量------------用ubound(lsgg)=-1为真可以达到目的.
IsNull,IsEmpty,IsArray均不行.
UINT SafeArrayGetDim(
SAFEARRAY FAR* psa
);
转换维VB中的语法格式为:
Public Declare Function SafeArrayGetDim Lib "oleaut32.dll" (ByRef saArray() As Any) As Long
如果数组已经初始化,则返回非0,否则返回0。
'API判断数组为空或没有初始化
Sub diag()
Dim msg As String
Dim arr1() As String, arr2() As String, arr3() As Date, arr4() As Date, arr5() As Range, arr6() As Range
msg = "arr1 " & IIf(SafeArrayGetDim(arr1) > 0, "数组不为空!", "数组为空!")
arr2 = Split("一、二、三、四、五、六", "、")
msg = msg & vbCrLf & "arr2 " & IIf(SafeArrayGetDim(arr2) > 0, "数组不为空!", "数组为空!")
msg = msg & vbCrLf & "arr3 " & IIf(SafeArrayGetDim(arr3) > 0, "数组不为空!", "数组为空!")
ReDim arr4(1 To 100)
msg = msg & vbCrLf & "arr4 " & IIf(SafeArrayGetDim(arr4) > 0, "数组不为空!", "数组为空!")
ReDim arr6(1 To 256, 1 To 65536)
msg = msg & vbCrLf & "arr5 " & IIf(SafeArrayGetDim(arr5) > 0, "数组不为空!", "数组为空!")
msg = msg & vbCrLf & "arr6 " & IIf(SafeArrayGetDim(arr6) > 0, "数组不为空!", "数组为空!")
MsgBox msg
End Sub
未初始化时使用Lbound或ubound会出错。就利用这种方法定义一个函数捕获出错就是空数组。