Private Sub Command1_Click()
Dim tinfo() As Integer, i As Integer
Dim arr(3, 2) As Integer '要判断的数组
ArrayInfo arr, tinfo
MsgBox "维数=" & tinfo(0)
For i = 1 To tinfo(0)
MsgBox "第" & i & "维:" & tinfo(i)
Next i
End Sub
Private Sub ArrayInfo(ByVal arr As Variant, ByRef tinfo() As Integer)
Dim i As Integer, ct As Integer
On Error GoTo jmp
ct = 1
Do
i = UBound(arr, ct)
ct = ct + 1
Loop
jmp:
ReDim tinfo(ct - 1)
tinfo(0) = ct - 1
For i = 1 To ct - 1
tinfo(i) = UBound(arr, i)
Next i
End Sub假定数组都以0为下标,只得出ubound,自己改改就ok了
Dim tinfo() As Integer, i As Integer
Dim arr(3, 2) As Integer '要判断的数组
ArrayInfo arr, tinfo
MsgBox "维数=" & tinfo(0)
For i = 1 To tinfo(0)
MsgBox "第" & i & "维:" & tinfo(i)
Next i
End Sub
Private Sub ArrayInfo(ByVal arr As Variant, ByRef tinfo() As Integer)
Dim i As Integer, ct As Integer
On Error GoTo jmp
ct = 1
Do
i = UBound(arr, ct)
ct = ct + 1
Loop
jmp:
ReDim tinfo(ct - 1)
tinfo(0) = ct - 1
For i = 1 To ct - 1
tinfo(i) = UBound(arr, i)
Next i
End Sub假定数组都以0为下标,只得出ubound,自己改改就ok了
解决方案 »
- access不匹配的问题
- ******************图标选中变色使用哪个API***********????
- 谁知道哪里有 B/S的人事档案管理系统下载?(免费的)
- setupFactory6.0制作的安装文件,开始安装时会闪一次setupFactory的标志,如何去掉
- 字符串替换的问提多谢
- 设计物流系统应该考虑那些问题,实现那些功能,拜托
- 我想请教:在串行通信时,什么情况下用WaitForSingleObject(hMutex,1)这个函数?
- 大侠们上眼了:数据库问题为什么不能用DataGrid显示用ADO连接的Access 2000数据库???"
- vb中我用ado连接到sqlserver库,现有一打开的connection,在作报表时我需一临时表存放中间数据以进一步处理,如何创建此临时表?如何把我当前所得的结果集rsttemp存入此表?请写出具体语句好吗?
- 在vb中如何调用服务器(另外一台机器)上的dll封装的对象
- 关于写入注册表DWORD值的语句
- 请问谁知道html help workshop的用法?谢谢
Dim ltemp As Long
Dim I As Long
Dim ndims As Long
On Error GoTo Errhadle
For I = 1 To 1000 '不会有这么多维数的数组
ltemp = UBound(MyArr, I) '其中MyArr为你要查询维数的数组
Next
Errhadle:
ndims = I - 1
MsgBox "这个数组有" & ndims & "维"看看现在是否已经实现了你想要的功能了呢?
see it?
TO: winnerwang(彷徨)
你的一看便知是可行的是不是没这类函数,需自个儿编?
没有那样的函数
http://www.csdn.net/develop/read_article.asp?id=12902
先来看看从这个上面我们能做些什么,比如要得到一个数组的维数,在VB里没有直接提供这样的方法,有一个变通的方法是通过错误捕获如下:
On Error Goto BoundsError
For I = 1 To 1000 '不会有这么多维数的数组
lTemp = LBound(MyArr, I)
Next
BoundErro:
nDims = I - 1
MsgBox "这个数组有" & nDims & "维" 现在我们知道了SafeArray的原理,所以也可以直接得到维数,如下:
'先得到一个指向SafeArray结构的指针的指针,原理是什么,我后面说。
ppMyArr = VarPtrArray(MyArr)
'从这个指针的指针得到SafeArray结构的指针
CopyMemory pMyArr, ByVal ppMyArr, 4
'再从这个指针所指地址的头两个字节取出cDims
CopyMemory nDims, ByVal pMyArr, 2
MsgBox "这个数组有" & nDims & "维"