With Workbooks(strSourceFilename).Sheets(1)
.Cells(1, 53).FormulaR1C1 = "=SUBSTITUTE(RC[-46]&"" ""&RC[-47],"","",""."")"
.Cells(1, 53).AutoFill Destination:=Range("BA1:BA" & intLastUsedRow), Type:=xlFillDefault
.Cells(1, 54).FormulaR1C1 = "=LEFT(RC[-50],6)&""20""&RIGHT(RC[-50],2)"
.Cells(1, 54).AutoFill Destination:=Range("BB1:BB" & intLastUsedRow), Type:=xlFillDefault
End With
funktioniert es nicht („Laufzeitfehler 1004 - Die Autofill-Methode des Range-Objektes konnte nicht ausgeführt werden“), vermutlich weil das Workbook(strSourceFilename) nicht im Vordergund ist (es ist also geöffnet, aber nicht active). Denn wenn ich im Debugging das Script vor diesem With anhalte, das Workbook(strSourceFilename) markiere und damit nach vorne hole und active setze, funktioniert das Script. Wieso ist das so? Ich dachte, die Vermeidung von Select und Acitvate ist die hohe Kunst des VBA-Codens. Wie geht’s richtig?
Danke und ein schönes Wochenende :o)
-Rob.
P. S. @ Reinhard:
Danke für Deine Hilfe. Beispiel-Datei folgt.
funktioniert es nicht („Laufzeitfehler 1004 - Die
Autofill-Methode des Range-Objektes konnte nicht ausgeführt
werden“), vermutlich weil das Workbook(strSourceFilename)
nicht im Vordergund ist (es ist also geöffnet, aber nicht
active).
Wieso ist das so? Ich dachte, die Vermeidung von Select und
Activate ist die hohe Kunst des VBA-Codens. Wie geht’s
richtig?
Andreas hat dich ja schon auf die fehlenden Punkte hingewiesen. Wenn es vermutlich daran liegt ist ja deine Frage wegen Activate/Select hinfällig.
Zum Thema Activate/Select, einige wenige Vba-Funktionen können nur auf einem aktivierten Blatt ausgeführt sind. Eine Liste der wenigen Funktionen habe ich leider nicht.
Ob Autofill dazugehört kannste ja nach Punktebereinigung leicht selbst testen.
Zu Autofill, bei Formeln benutze ich das nicht. Schau mal diesen Code:
Sub tt2()
Range(Cells(1, 53), Cells(100, 53)).FormulaR1C1 = „=SUBSTITUTE(RC[-46]&“" „“&RC[-47],"","",""."")"
End Sub
Die 100 ist deine intLastUsedRow. Wobei ich diese variable nie hätte, wenn dann hätte ich lngLastUsedRow
Andreas hat dich ja schon auf die fehlenden Punkte
hingewiesen. Wenn es vermutlich daran liegt ist ja deine Frage
wegen Activate/Select hinfällig.
Richtig. Danke…
Zum Thema Activate/Select, einige wenige Vba-Funktionen können
nur auf einem aktivierten Blatt ausgeführt sind. Eine Liste
der wenigen Funktionen habe ich leider nicht.
Ob Autofill dazugehört kannste ja nach Punktebereinigung
leicht selbst testen.
Zu Autofill, bei Formeln benutze ich das nicht. Schau mal
diesen Code:
Sub tt2()
Range(Cells(1, 53), Cells(100, 53)).FormulaR1C1 =
„=SUBSTITUTE(RC[-46]&“" „“&RC[-47],"","",""."")"
End Sub
Hmm, das führt doch zu WECHSELN, oder? Wie kann ich damit Autofill ersetzen? :o|
Die 100 ist deine intLastUsedRow. Wobei ich diese variable nie
hätte, wenn dann hätte ich lngLastUsedRow
Ah, paßt das maximale Maximum nicht mehr in Integer rein?
Vielen Dank für die prima Tipps und ein schönes Wochenende :o)
-Rob.