2017-10-17 363 views
0

我剛接觸VBA,需要幫助。有人可以請幫助。當我執行,我得到對象的要求。我沒有使用Option Explicit。謝謝。Object required VBA中的錯誤 - 定義變量

在下面的行中出現錯誤。

ie.document.getElementById("dp-status-dropdown_1").Click 

已發佈大部分代碼。請幫忙。

Sub DataUpdate() 
Application.ScreenUpdating = False 
Application.DisplayAlerts = False 
Application.EnableEvents = False 
Application.DisplayAlerts = False 

Dim ie As New SHDocVw.InternetExplorer 
Dim htmldoc As MSHTML.HTMLDocument 
Dim htmlinouts As MSHTML.IHTMLElementCollection 
Dim out As MSHTML.IHTMLElement 
Dim urr As Range 
Dim Count As Long 
Dim i As Long 

Set ie = New InternetExplorer 
'  htmldoc = ie.document 

Count = ActiveSheet.Cells(Rows.Count, "H").End(xlUp).Row 

For i = 4 To Count 

    'For Each urr In Application.ThisWorkbook.Sheets("Dump").Range("H5:H" & Application.WorksheetFunction.CountA(ThisWorkbook.Sheets("Dump").Range("H:H"))).Cells 
    Set urr = Worksheets("Dump").Cells(i, 8) 
    ie.Visible = True 
    ie.navigate urr       'H4 holds the URL 
    Do 
     DoEvents 
    Loop Until ie.readyState = READYSTATE_COMPLETE 

    ThisWorkbook.Sheets("Dump").Activate 
    Dim cellvalue As Range 
    Set cellvalue = ThisWorkbook.Sheets("Dump").Range("J4") 
    If cellvalue = "" Then 
     cellvalue = "" 
    ElseIf cellvalue = "Pitch in Progress " Then 
     ie.document.getElementById("a-autoid-0-announce").Click 
     ie.document.getElementById("dp-status-dropdown_0").Click 
     Dim xx1 As Object 
     For Each xx1 In ie.document.getElementsByClassName("a-button-text") 
      If xx1.innerText Like "*OK*" Then 
       ' Debug.Print xx1.innerText 
       xx1.Click 
       Exit For 
      End If 
     Next xx1 
    ElseIf cellvalue = "Not Reachable" Then 
     ie.document.getElementById("a-autoid-0-announce").Click 
     ie.document.getElementById("dp-status-dropdown_1").Click 
     Dim xx2 As Object 
     For Each xx2 In ie.document.getElementsByClassName("a-button-text") 
      If xx2.innerText Like "*OK*" Then 
       ' Debug.Print xx1.innerText 
       xx2.Click 
       Exit For 
      End If 
     Next xx2 
    ElseIf cellvalue = "Not Interested" Then 
     ie.document.getElementById("a-autoid-0-announce").Click 
     ie.document.getElementById("dp-status-dropdown_2").Click 
     Dim xx3 As Object 
     For Each xx3 In ie.document.getElementsByClassName("a-button-text") 
      If xx3.innerText Like "*OK*" Then 
       ' Debug.Print xx1.innerText 
       xx3.Click 
       Exit For 
      End If 
     Next xx3 
    ElseIf cellvalue = "Work Started" Then 
     ie.document.getElementById("a-autoid-0-announce").Click 
     ie.document.getElementById("dp-status-dropdown_3").Click 
     Dim xx4 As Object 
     For Each xx4 In ie.document.getElementsByClassName("a-button-text") 
      If xx4.innerText Like "*OK*" Then 
       ' Debug.Print xx1.innerText 
       xx4.Click 
       Exit For 
      End If 
     Next xx4 
    ElseIf cellvalue = "Work Completed" Then 
     ie.document.getElementById("a-autoid-0-announce").Click 
     ie.document.getElementById("dp-status-dropdown_4").Click 
     Dim xx5 As Object 
     For Each xx5 In ie.document.getElementsByClassName("a-button-text") 
      If xx5.innerText Like "*OK*" Then 
       ' Debug.Print xx1.innerText 
       xx5.Click 
       Exit For 
      End If 
     Next xx5 
    ElseIf cellvalue = "Products picked up" Then 
     ie.document.getElementById("a-autoid-0-announce").Click 
     ie.document.getElementById("dp-status-dropdown_4").Click 
     Dim xx6 As Object 
     For Each xx6 In ie.document.getElementsByClassName("a-button-text") 
      If xx6.innerText Like "*OK*" Then 
       ' Debug.Print xx1.innerText 
       xx6.Click 
       Exit For 
      End If 
     Next xx6 
    ElseIf cellvalue = "Products in transit" Then 
     ie.document.getElementById("a-autoid-0-announce").Click 
     ie.document.getElementById("dp-status-dropdown_5").Click 
     Dim xx7 As Object 
     For Each xx7 In ie.document.getElementsByClassName("a-button-text") 
      If xx7.innerText Like "*OK*" Then 
       ' Debug.Print xx1.innerText 
       xx7.Click 
       Exit For 
      End If 
     Next xx7 
    ElseIf cellvalue = "Products delivered" Then 
     ie.document.getElementById("a-autoid-0-announce").Click 
     ie.document.getElementById("dp-status-dropdown_6").Click 
     Dim xx8 As Object 
     For Each xx8 In ie.document.getElementsByClassName("a-button-text") 
      If xx8.innerText Like "*OK*" Then 
       ' Debug.Print xx1.innerText 
       xx8.Click 
       Exit For 
      End If 
     Next xx8 
    ElseIf cellvalue = "MoU Signed" Then  
     ie.document.getElementById("a-autoid-0-announce").Click 
     ie.document.getElementById("dp-status-dropdown_3").Click 
     Dim xx9 As Object 
     For Each xx9 In ie.document.getElementsByClassName("a-button-text") 
      If xx9.innerText Like "*OK*" Then 
       ' Debug.Print xx1.innerText 
       xx9.Click 
       Exit For 
      End If 
     Next xx9 
    ElseIf cellvalue = "Subscription ended" Then 
     ie.document.getElementById("a-autoid-0-announce").Click 
     ie.document.getElementById("dp-status-dropdown_4").Click 
     Dim xx10 As Object 
     For Each xx10 In ie.document.getElementsByClassName("a-button-text") 
      If xx10.innerText Like "*OK*" Then 
       ' Debug.Print xx1.innerText 
       xx10.Click 
       Exit For 
      End If 
     Next xx10 

    End If 
    Dim FollowupDate As Range   
    Set FollowupDate = ThisWorkbook.Sheets("Dump").Range("K4") 
    If FollowupDate = "" Then 
     FollowupDate = "" 
    Else 
     ie.document.getElementById("pc-followUpDate-edit").Click 
     ie.document.getElementById("pc-followUpDate-input").Value = FollowupDate 
     ie.document.getElementById("pc-followUpDate-button").Click 
    End If 

    Dim pprsrc As Range   
    Set pprsrc = ThisWorkbook.Sheets("Dump").Range("L4") 
    If pprsrc = "" Then 
     pprsrc = "" 
    ElseIf pprsrc = "Call back scheduled" Then 
     ie.document.getElementById("pc-pitchInProgressRequestStatusReasonCode-edit").Click 
     ie.document.getElementById("pc-pitchInProgressRequestStatusReasonCode-input_1").Click 
     ie.document.getElementById("pc-pitchInProgressRequestStatusReasonCode-button").Click 
    ElseIf pprsrc = "Price negotiation" Then 
     ie.document.getElementById("pc-pitchInProgressRequestStatusReasonCode-edit").Click 
     ie.document.getElementById("a-autoid-30-announce").Click 
     ie.document.getElementById("pc-pitchInProgressRequestStatusReasonCode-input_2").Click 
     ie.document.getElementById("pc-pitchInProgressRequestStatusReasonCode-button").Click 
    ElseIf pprsrc = "Seller revert awaited" Then 
     ie.document.getElementById("pc-pitchInProgressRequestStatusReasonCode-edit").Click 
     ie.document.getElementById("pc-pitchInProgressRequestStatusReasonCode-input_3").Click 
     ie.document.getElementById("pc-pitchInProgressRequestStatusReasonCode-button").Click 
    ElseIf pprsrc = "products delayed" Then 
     ie.document.getElementById("pc-pitchInProgressRequestStatusReasonCode-edit").Click 
     ie.document.getElementById("pc-pitchInProgressRequestStatusReasonCode-input_4").Click 
     ie.document.getElementById("pc-pitchInProgressRequestStatusReasonCode-button").Click 
    End If 
    Dim nirsrc As Range   
    Set nirsrc = ThisWorkbook.Sheets("Dump").Range("M4") 
    If nirsrc = "" Then 
     nirsrc = "" 
    ElseIf nirsrc = "Pricing issues" Then 
     ie.document.getElementById("pc-notInterestedRequestStatusReasonCode-edit").Click 
     ie.document.getElementById("pc-notInterestedRequestStatusReasonCode-input_1").Click 
     ie.document.getElementById("pc-notInterestedRequestStatusReasonCode-button").Click 
    ElseIf nirsrc = "Using another SP" Then 
     ie.document.getElementById("pc-notInterestedRequestStatusReasonCode-edit").Click 
     ie.document.getElementById("pc-notInterestedRequestStatusReasonCode-input_2").Click 
     ie.document.getElementById("pc-notInterestedRequestStatusReasonCode-button").Click 
    ElseIf nirsrc = "In house capability" Then 
     ie.document.getElementById("pc-notInterestedRequestStatusReasonCode-edit").Click 
     ie.document.getElementById("pc-notInterestedRequestStatusReasonCode-input_3").Click 
     ie.document.getElementById("pc-notInterestedRequestStatusReasonCode-button").Click 
    ElseIf nirsrc = "No current requirement" Then 
     ie.document.getElementById("pc-notInterestedRequestStatusReasonCode-edit").Click 
     ie.document.getElementById("pc-notInterestedRequestStatusReasonCode-input_4").Click 
     ie.document.getElementById("pc-notInterestedRequestStatusReasonCode-button").Click 
    ElseIf nirsrc = "Non serviceable" Then 
     ie.document.getElementById("pc-notInterestedRequestStatusReasonCode-edit").Click 
     ie.document.getElementById("pc-notInterestedRequestStatusReasonCode-input_5").Click 
     ie.document.getElementById("pc-notInterestedRequestStatusReasonCode-button").Click 
    ElseIf nirsrc = "Not Applicable" Then 
     ie.document.getElementById("pc-notInterestedRequestStatusReasonCode-edit").Click 
     ie.document.getElementById("pc-notInterestedRequestStatusReasonCode-input_0").Click 
     ie.document.getElementById("pc-notInterestedRequestStatusReasonCode-button").Click 
    End If 
    Dim SM As Range  
    Set SM = ThisWorkbook.Sheets("Dump").Range("N4") 
    If SM = "" Then 
     SM = "" 
    Else 
     ie.document.getElementById("pc-salesManagerName-edit").Click 
     ie.document.getElementById("pc-salesManagerName-input").Value = SM 
     ie.document.getElementById("pc-salesManagerName-button").Click 
    End If 
    Dim Comments As Range   
    Set Comments = ThisWorkbook.Sheets("Dump").Range("O4") 
    If Comments = "" Then 
     Comments = "" 
    Else 
     ie.document.getElementById("pc-providerComments-edit").Click 
     ie.document.getElementById("pc-providerComments-input").Value = Comments 
     ie.document.getElementById("pc-providerComments-button").Click 
    End If 
    ie.document.getElementById("save-detail-btn-announce").Click 
Next i 

末次

+4

* I ['m]沒有使用Option Explicit * - 然後從那開始。另外,請介意告訴我們哪條線會拋出錯誤? –

+0

你已經有一個從IF語句開始並在其之外結束的循環。你的第一個'FOR EACHE xx1'開始於'IF cellvalue'塊末端,它就在它的外面結束......等等,不,它不會......縮進你的代碼塊以提高可讀性! –

+2

縮進代碼可能有助於*每個人*更好地閱讀它,並且能夠更輕鬆地幫助您。 –

回答

0

對象所需錯誤上來了,如果你還沒有初始化,您使用的是「即」對象。 另外,縮進的代碼應該看起來像這樣。

Dim cellvalue As String 
cellvalue = "Pitch in Progress " 

If cellvalue = "" Then 
    cellvalue = "" 
ElseIf cellvalue = "Pitch in Progress " Then           '---------- Pitch in Progress -------- 
    ie.Document.getElementById("a-autoid-0-announce").Click 
    ie.Document.getElementById("dp-status-dropdown_0").Click 
    Dim xx1 As Object 
    For Each xx1 In ie.Document.getElementsByClassName("a-button-text") 
     If xx1.innerText Like "*OK*" Then 
     ' Debug.Print xx1.innerText 
      xx1.Click 
      Exit For 
     End If 
    Next xx1 
ElseIf cellvalue = "Not Reachable" Then          '--------- Not Reachable ----------- 
    ie.Document.getElementById("a-autoid-0-announce").Click 
    ie.Document.getElementById("dp-status-dropdown_1").Click 
    Dim xx2 As Object 
    For Each xx2 In ie.Document.getElementsByClassName("a-button-text") 
     If xx2.innerText Like "*OK*" Then 
      ' Debug.Print xx1.innerText 
      xx2.Click 
      Exit For 
     End If 
    Next xx2 
End If 

請注意,我已經加入「結束,如果」到底,我已經聲明的變量稱爲cellvalue並將其設置爲「瀝青在進步」,使之貫穿代碼,錯誤的是拋在這條線上:

ie.Document.getElementById("a-autoid-0-announce").Click 
+0

對不起,以下是整個代碼。我在下面的行中出現錯誤。 –

+0

ie.Document.getElementById(「a-autoid-0-announce」)。點擊 –

+0

我的代碼大約有750多行,無法粘貼到這裏。 –