2016-05-10 11 views
1

Ich versuche, ein Makro zu schreiben. Das Makro sollte funktionieren, indem der Benutzer auf die erste leere Zelle in Spalte D klickt. Dann sollte es die Verfolgungsnummer in Spalte C nach links greifen. Navigieren Sie zur Website. Geben Sie das Lieferdatum in die erste angeklickte Zelle zurück, schalten Sie dann im Grunde eine Zeile nach unten und machen Sie dasselbe, ohne erneut auf die nächste Zeile klicken zu müssen. Wiederholen Sie den Vorgang, bis Sie auf die erste leere Zelle in Spalte C stoßen. Diese kann nicht jedes Mal bei einer bestimmten Zelle beginnen, da es sich um ein fortlaufendes Tabellenblatt handelt, das jede Woche hinzugefügt wird und damit den unteren Rand schließt. Zum Beispiel diese Woche, wo ich angefangen habe, war Zelle D2343. Es ist noch kein Code fertig, aber alle Vorschläge wären hilfreich. Ich bin ziemlich neu im Codieren und extrem neu, um VBA zu übertreffen, also bitte ertragen Sie mit mir. Es gibt wahrscheinlich einen besseren Weg als mit ActiveCell, aber ich weiß nicht wie. DieseLaufzeitfehler 1004 auf Do, während nicht ActiveCell.Offest (-1, RowCount) .Value = ""

Public Sub Tracking() 
Dim IE As Object 
Dim ReturnValue As String 
Dim ProUrl As String 
Dim RowCount As Integer 

Set IE = CreateObject("InternetExplorer.application") 

RowCount = 0 

'THIS LINE RETURN THE ERROR 
Do While Not ActiveCell.Offset(-1, RowCount).Value = "" 

ProUrl = "https://www.rrts.com/Tools/Tracking/Pages/MultipleResults.aspx?PROS=" & ActiveCell.Offset(-1, RowCount).Value 

With IE 
    .Visible = False 
    .Navigate ProUrl 
    Do Until Not IE.Busy And IE.readyState = 4: DoEvents: Loop 
End With 

ReturnValue = Trim(IE.document.getElementsByTagName("Span")(16).innerText) 
ActiveCell.Offset(, RowCount).Value = ReturnValue 

RowCount = RowCount + 1 

Loop 

IE.Quit 
Set IE = Nothing 

End Sub 

Jede Hilfe wäre willkommen. Stackoverflow war eine enorme Ressource. Vielen Dank.

+0

Gibt es irgendwelche fusionierten Zellen oder Zellen, die mit einem Fehler wie '# N/A' – litelite

Antwort

1

Ich denke, dass der Fehler in Ihrer Offset Methode sein kann. Das erste Argument sollte der Zeilenoffset sein, und das zweite Argument sollte der Spaltenoffset sein. Es scheint, als ob du das rückwärts haben könntest. Versuchen

es an sich ändernde:

Do While Not ActiveCell.Offset(RowCount, -1).Value = "" 
+0

Ja, das funktioniert. Und weißt du, ich hatte es gestern so, aber ich habe den Code angepasst, um etwas anderes zu tun und habe das geändert, weil ich dachte, dass es falsch war. – sdrloveshim

+0

@sdrloveshim Wenn Sie VBA mehr verwenden, werden Sie lernen, was die manchmal kryptischen Fehlermeldungen bedeuten. Fehler 1004 wird angezeigt, wenn Sie versuchen, eine Aktion für ein Objekt auszuführen, das nicht vorhanden ist. In Ihrem Fall, wenn Sie versuchen, eine Spalte vor Spalte A zu versetzen, wird es offensichtlich nicht existieren. Sie fangen an, diese Fehler in kürzester Zeit selbst zu erfassen. – user3561813

Verwandte Themen