' 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不到 物件,然后報錯,所以想通過這個 陳述句先判斷下是否加載完全。但是網上的方法 都測驗了,也一樣,判斷不為空了,結果 還是 獲取不到值,請大俠指教一下?謝謝
uj5u.com熱心網友回復:
實在不行加個錯誤處理代碼吧:
sub somesub()
on error goto hErr
' ... 操作網頁 ...
exit sub
hErr:
debug.print err.description
end sub
或者根據Document.ReadyState判斷一下網頁狀態:
uj5u.com熱心網友回復:
WebBrowser1.Document.getElementsByName("ItemID")(0).Value這么取容易報錯,因為ItemID這個陣列可能為空,取一個空物件的Value就會報空指標錯誤。
應該判斷的是物件是否為空,而非物件的屬性是否為空。
判斷 WebBrowser1.Document.getElementsByName("ItemID") is nothing 為False的時候才能下一步。
另外,你現在取的是陣列的第0個元素,問題不大,如果你需要取陣列的第N個元素的時候,你還要判斷一下這個陣列的上界 是不是比N要大,否則會引發陣列索引越界的錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/30225.html
標籤:VBA
下一篇:正則用不了submatches
