Activate notwendig?
28.03.2005 20:59:21
Reinhard
mit copy und destination steh ich eh auf Kriegsfuss, da es manchmal klappt, mal nicht und ich es noch nicht verinnerlicht habe warum wieso usw.
In einem andren Forum bastelte ich jmdn die nachfolgenden Makros, Er wollte von Blatt1 Zeilen nach Blatt2 kopieren, wobei die in Blatt2 immer zwei Leerzeilen dazwischen haben und dann in Spalte 6 die jeweiligen 3 Zeilen verbunden werden.
Daraufhin entwickelte ich das erste Makro. Meiner Anscht nach völlig okay, aber der Debugger zeigt Fehler 1004 in der For-Schleife, und welche der beiden Anweisungen in der For-Schleife er bemängelt, liegt daran, welches Tabellenblatt grad aktuell ist.
ch habe daraufhin rumexperimentiert und Makro2 entwickelt, das läuft auch.
Aber, meine Frage, warum nuss ich Activate benutzen?
Wieso packt es vba nicht, dass ich in Tabelle1 stehe, bzw die ist aktiviert und ich kopier was von Blatt28 nach Blatt29, wieso muss ich da Blatt28 o.ä. aktivieren?
Und, logo, wie kann ich Makro2 verbessern?, also ohne activate usw. :-)
Lieben Gruß
Reinhard
Sub Makro1()
Set wsQ = Worksheets("Tabelle1")
Set wsZ = Worksheets("Tabelle2")
anz = wsQ.Range("A65536").End(xlUp).Row
For n = 1 To anz
wsQ.Range(Cells(n, 1), Cells(n, 5)).Copy Destination:=wsZ.Cells(3 * (n - 1) + 1, 1)
wsZ.Range(Cells(3 * (n - 1) + 1, 6), Cells(3 * (n - 1) + 3, 6)).MergeCells = True
Next n
Set wsQ = Nothing
Set wsZ = Nothing
End
Sub
Sub Makro2()
Set wsQ = Worksheets(1)
Set wsZ = Worksheets(2)
anz = wsQ.Range("A65536").End(xlUp).Row
wsZ.Activate
With wsQ
For n = 1 To anz
.Range(.Cells(n, 1), .Cells(n, 5)).Copy Destination:=wsZ.Cells(3 * (n - 1) + 1, 1)
wsZ.Range(Cells(3 * (n - 1) + 1, 6), Cells(3 * (n - 1) + 3, 6)).MergeCells = True
Next n
End With
Set wsQ = Nothing
Set wsZ = Nothing
End Sub