So verallgemeinern Sie ein Makro auf eine beliebige Zeile

-1

Das unten stehende Excel-Makro ist so geschrieben, dass es in einer bestimmten Zeile (Zeile 2) von Excel funktioniert. Ich möchte es auf jede Zeile anwenden können, die ich auswähle, anstatt nur auf Zeile 2. Weiß jemand, wie man es anpasst? Ich hatte dies für mich geschrieben und kenne keine VBA-Codierung.

Sub test()

Set ie = CreateObject("internetexplorer.application")

ie.Navigate "http://www.fedex.com/us/"

While ie.Busy Or ie.ReadyState <> 4: DoEvents: Wend

ie.Visible = 1

Set doc = ie.document

On Error Resume Next

With doc

    .getElementsByname("username").Item(0).Value = "Username"
    .getElementsByname("password").Item(0).Focus
    .getElementsByname("password").Item(0).Value = "Password"
    .getElementsByname("startpage").Item(0).selectedindex = 1
    .getElementsByname("login").Item(0).Click

    While ie.Busy Or ie.ReadyState <> 4: DoEvents: Wend

    Application.Wait (Now + TimeValue("00:00:04"))

    Set doc = ie.document

    doc.getElementsByname("toData.addressData.contactName").Item(0).Value
= Range("L2")

    doc.getElementsByname("toData.addressData.addressLine1").Item(0).Value
= Range("M2")

    doc.getElementsByname("toData.addressData.city").Item(0).Value = Range("N2")

    doc.getElementsByname("toData.addressData.zipPostalCode").Item(0).Value
= Range("P2")

    doc.getElementsByname("toData.addressData.phoneNumber").Item(0).Value
= Range("S2")

    doc.getElementsByname("psdData.mpsRowDataList[0].weight").Item(0).Value
= Range("F2")

    doc.all("psdData.packageType").Value = "Your Packaging"

    Call ie.document.parentWindow.execScript("psdHandler_onShipPackageTypeChange(""IS3_GSV="")", "JavaScript")

    ie.document.getElementsByname("psdData.mpsRowDataList[0].mpsDimensionSelect").Item(0).Item(1).Selected
= True

    Call ie.document.parentWindow.execScript("psdHandler_onChangeDimensions()", "JavaScript")

    ie.document.getElementsByname("psdData.mpsRowDataList[0].mpsLength").Item(0).Value
= Range("g2")
    ie.document.getElementsByname("psdData.mpsRowDataList[0].mpsWidth").Item(0).Value
= Range("h2")
    ie.document.getElementsByname("psdData.mpsRowDataList[0].mpsHeight").Item(0).Value
= Range("i2")

    .getElementbyid("module.rating._headerButtons").Click

    ie.document.getElementbyid("rating.calculateRate").Click
     End With

Set doc = Nothing Set ie = Nothing

End Sub
Stan Green
quelle

Antworten:

1

Fügen Sie als erste Zeile Folgendes ein:

activeRow = ActiveCell.Row

Dadurch erhalten Sie die aktuell ausgewählte Zeile. Ersetzen Sie dann jede Zelle, die sich auf Zeile 2 bezieht, durch

"X" & activeRow

Dabei ist X der Spaltenname, der bereits in Ihrem Code vorhanden ist.

Thomas Weller
quelle
Das ist für mich in Ordnung.
Stan Green