Word VBA Select/Activate vermeiden

  • Word

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Dark_Eagle.

    Word VBA Select/Activate vermeiden

    Hallo Welt,

    man liest ja immer wieder, dass man .select und .activate vermeiden soll. In meinem Fall ist der Geist zwar willig, aber das Fleisch ist schwach. Ich habe folgenden Code den ich gerne ohne activate verwenden würde was mir jedoch nicht gelingt:

    Visual Basic-Quellcode

    1. n = Sheets("Rohdaten").Cells(Cells.Rows.Count, 1).End(xlUp).Row '1=Spalte ASheets("Datengrundlage").Visible = True
    2. Sheets("Datengrundlage").Activate
    3. Sheets("Datengrundlage").Cells(3, x).FormulaR1C1 = _
    4. "=ROUND(VALUE(SUBSTITUTE(TRIM(MID(TRIM(Rohdaten!R[-1]C),1,SEARCH("" "",TRIM(Rohdaten!R[-1]C),1))),""."","","")),3)"
    5. Sheets("Datengrundlage").Cells(3, x + 1).FormulaR1C1 = _
    6. "=ROUND(VALUE(SUBSTITUTE(TRIM(MID(TRIM(Rohdaten!R[-1]C[-1]),SEARCH("" "",TRIM(Rohdaten!R[-1]C[-1]),1),20)),""."","","")),3)"
    7. Sheets("Datengrundlage").Range(Cells(3, x), Cells(3, x + 1)).AutoFill Destination:=Sheets("Datengrundlage").Range(Cells(3, x), Cells(n, x + 1)), Type:=xlFillDefault
    8. For s = n - 200 To n + 200
    9. If IsError(Cells(s, x).Value) Then
    10. Cells(s, x).ClearContents 'Delete
    11. End If
    12. Next
    13. Worksheets("Rohdaten").Select


    Wenn ich das Activate weglasse bekomme ich die Fehlermeldung,dass das Autofill dann nicht funktioniert. Kann mir jemand sagen wie ich Autofill nutzen kann ohne Activate?

    Der 2. Teil des Codes mit der Forschleife stammt aus google. Wie muss ich IsError anpassen das es ohne Activate läuft?



    Hoffe jemand kann mir helfen. Würde mich auch über ein paar erklärende Worte dazu freuen, damit ich nächstes mal nicht den gleichen Fehler wieder mache.



    Gruß (und danke Schon mal)

    Darky
    Dem Sheet eine Objektvariable zuordnen und überall, wo sich eine Property auf das Sheet bezieht, mit angeben:

    Visual Basic-Quellcode

    1. Set DG = Sheets("Datengrundlage")
    2. n = DG.Cells(Rows.Count, 1).End(xlUp).Row '1=Spalte ASheets("Datengrundlage").Visible = True
    3. DG.Cells(3, x).FormulaR1C1 = "=ROUND(VALUE(SUBSTITUTE(TRIM(MID(TRIM(Rohdaten!R[-1]C),1,SEARCH("" "",TRIM(Rohdaten!R[-1]C),1))),""."","","")),3)"
    4. DG.Cells(3, x + 1).FormulaR1C1 = "=ROUND(VALUE(SUBSTITUTE(TRIM(MID(TRIM(Rohdaten!R[-1]C[-1]),SEARCH("" "",TRIM(Rohdaten!R[-1]C[-1]),1),20)),""."","","")),3)"
    5. DG.Range(DG.Cells(3, x), DG.Cells(3, x + 1)).AutoFill Destination:=DG.Range(DG.Cells(3, x), DG.Cells(n, x + 1)), Type:=xlFillDefault
    6. ...
    7. If IsError(DG.Cells(s, x).Value) Then DG.Cells(s, x).ClearContents

    Etwas eleganter geht es mit "With":

    Visual Basic-Quellcode

    1. With Sheets("Datengrundlage")
    2. n = .Cells(Rows.Count, 1).End(xlUp).Row
    3. .Cells(3, x).FormulaR1C1 = "=ROUND(VALUE(SUBSTITUTE(TRIM(MID(TRIM(Rohdaten!R[-1]C),1,SEARCH("" "",TRIM(Rohdaten!R[-1]C),1))),""."","","")),3)"
    4. .Cells(3, x + 1).FormulaR1C1 = "=ROUND(VALUE(SUBSTITUTE(TRIM(MID(TRIM(Rohdaten!R[-1]C[-1]),SEARCH("" "",TRIM(Rohdaten!R[-1]C[-1]),1),20)),""."","","")),3)"
    5. .Range(.Cells(3, x), .Cells(3, x + 1)).AutoFill Destination:=.Range(.Cells(3, x), .Cells(n, x + 1)), Type:=xlFillDefault
    6. ...
    7. If IsError(.Cells(s, x).Value) Then .Cells(s, x).ClearContents
    8. End With
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()