vb 怎么去判断 html 对象 是否存在?用nothing null <>""都不成功

yoyofuture 2019-06-26 10:23:02
' If WebBrowser1.Document.getElementsByName("ItemID")(0).Value <> "" Then
Set is_complete = WebBrowser1.Document.getElementsByName("name")(0)
If Not is_complete Is Nothing Then
MsgBox is_complete
' If WebBrowser1.Document.getElementsByName("name")(0).Value <> "" Then
Debug.Print vbLf
Debug.Print WebBrowser1.Document.getElementsByName("name")(0).Value
Debug.Print "-------------------------"
Debug.Print ccc
end if

很诡异的问题就是 进入了 if 语句后 Debug.Print WebBrowser1.Document.getElementsByName("name")(0).Value 这个语句居然输出为空了,就是 Not is_complete Is Nothing 这个是 true的 ,然后我测试过 用 is null <>""来判断都是一样的结果,第一行被注释的语句也一样测试过,结果一样,获取的对象 msgbox 输出是 object htmlinputelement ,就是 有时候 获取值的时候 网页加载不完全,会导致 get不到 对象,然后报错,所以想通过这个 语句先判断下是否加载完全。但是网上的方法 都测试了,也一样,判断不为空了,结果 还是 获取不到值,请大侠指教一下?谢谢
...全文
78 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
X-i-n 2019-06-29
  • 打赏
  • 举报
回复
WebBrowser1.Document.getElementsByName("ItemID")(0).Value 这么取容易报错,因为ItemID这个数组可能为空,取一个空对象的Value就会报空指针错误。 应该判断的是对象是否为空,而非对象的属性是否为空。 判断 WebBrowser1.Document.getElementsByName("ItemID") is nothing 为False的时候才能下一步。 另外,你现在取的是数组的第0个元素,问题不大,如果你需要取数组的第N个元素的时候,你还要判断一下这个数组的上界 是不是比N要大,否则会引发数组索引越界的错误。
milaoshu1020 2019-06-28
  • 打赏
  • 举报
回复
实在不行加个错误处理代码吧:

sub somesub()
on error goto hErr
' ... 操作网页 ...
exit sub
hErr:
debug.print err.description
end sub


或者根据Document.ReadyState判断一下网页状态:

2,462

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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