if id<uBound(a,1) and id >lBound(a,1) then ...... end if
用UBOUNDL函数可以返回数组的上标,下标
说得都对,但实际上若是结构数组 Public type PrjInfo PrjID as long PrjCaption as string end typedim PrjInfoAry() as prjInfo若第n项未定义,则取值 PrjInfoAry(n).PrjID 时会出错,“下标越界”,怎么判断这个结构数组元素是否存在。
Private Sub Form_Load() Dim PrjInfoAry(3) As PrjInfo PrjInfoAry(1).PrjID = "1" PrjInfoAry(1).PrjCaption = "a" PrjInfoAry(3).PrjID = "2" PrjInfoAry(3).PrjCaption = "b" End Sub 我查PrjInfoAry(2).PrjID的值就是0 ,PrjInfoAry(2).PrjCaption的值就是空, 不会出现“下标越界” 你说的下标越界可能是Dim PrjInfoAry(3) As PrjInfo 但你却取PrjInfoAry(4).PrjID的值,那肯定出错,
......
end if
Public type PrjInfo
PrjID as long
PrjCaption as string
end typedim PrjInfoAry() as prjInfo若第n项未定义,则取值 PrjInfoAry(n).PrjID 时会出错,“下标越界”,怎么判断这个结构数组元素是否存在。
试了一下,方发觉这个错误根本不存在,我把结构数组跟以前常用的控件数组搞混了。
还是 henrryzhang(North Wolf) 回答的切中要害。
给分嘍。
Dim PrjInfoAry(3) As PrjInfo
PrjInfoAry(1).PrjID = "1"
PrjInfoAry(1).PrjCaption = "a"
PrjInfoAry(3).PrjID = "2"
PrjInfoAry(3).PrjCaption = "b"
End Sub
我查PrjInfoAry(2).PrjID的值就是0 ,PrjInfoAry(2).PrjCaption的值就是空,
不会出现“下标越界”
你说的下标越界可能是Dim PrjInfoAry(3) As PrjInfo
但你却取PrjInfoAry(4).PrjID的值,那肯定出错,