怎么判断动态数组是否为Null

MeBoss 2011-05-14 09:32:00
Public Type dataTy

ID As Integer

X As Single
Y As Single
Z As Single

Pter As String
CMD As String

End Type


Public dataArr() As dataTy

If dataArr(0).ID = Null Then
MsgBox ("错误")
End If


这样会报下标越界的 请问应该怎么修改呢
还有一个问题是 我写成 dataArr(0) = Null 为什么会报类型不匹配呢??
谢谢

...全文
160 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
laviewpbt 2011-05-14
  • 打赏
  • 举报
回复
private Declare Function SafeArrayGetDim Lib "oleaut32.dll" (ByRef saArray() As Any) As Long



SafeArrayGetDim(dataArr) = False 说明数据还没有初始化
现在还是人类 2011-05-14
  • 打赏
  • 举报
回复
VB 中只有 Variant 类型可以设置 Null 值,所以也只有 Variant 类型在有必要用
IsNull 去判断,其他类型就没必要用 Null 去进行读写操作。

你的结构体内变量,不是 Variant 类型,所以无法用 Null 的概念去判断。
再者,你的目的是判断数组是否初始化,可以用错误陷阱的方式来处理也可以的,如:

Private Type dataTy
ID As Integer
X As Single
Y As Single
Z As Single
Pter As String
CMD As String
End Type
Private dataArr() As dataTy

Private Sub Form_Load()
Dim ArrayCount As Long
'这里可以初始化数组,你可以看看效果
'ReDim dataArr(0)

On Error Resume Next
ArrayCount = UBound(dataArr)
If Err.Number <> 0 Then
Err.Clear
MsgBox "错误"
Else
MsgBox "数据以初始化"
End If
End Sub

孤独剑_LPZ 2011-05-14
  • 打赏
  • 举报
回复
1 没有实例化
2 判断表达式是否为空要用isnull()
yangzn76 2011-05-14
  • 打赏
  • 举报
回复
dataArr() 没有定义到底用多少个元素,你要redmin dataArr(5) 后才能用。

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧