Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
588to592
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
588to592
588to592
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Activate notwendig?

Activate notwendig?
28.03.2005 20:59:21
Reinhard
Hallo Wissende.
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

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Activate notwendig?
28.03.2005 21:07:31
Bert
Range(Cells...) bezieht sich immer auf das aktive Blatt, du musst das explizit angeben, z.B. so:
For n = 1 To anz
With wsQ
.Range(.Cells(n, 1), .Cells(n, 5)).Copy Destination:=wsZ.Cells(3 * (n - 1) + 1, 1)
End With
Next n
Bert
AW: Activate notwendig?
28.03.2005 21:17:43
NE
Abend Reinhard,
probier mal:

Sub Makro1()
Dim wsQ As Worksheet, wsZ As Worksheet
Dim anz&, n&
Set wsQ = Worksheets("Tabelle1")
Set wsZ = Worksheets("Tabelle2")
anz = wsQ.Range("A65536").End(xlUp).Row
For n = 1 To anz
wsQ.Range(<b>wsQ.</b>Cells(n, 1), Cells(n, 5)).Copy Destination:=wsZ.Cells(3 * (n - 1) + 1, 1)
wsZ.Range(<b>wsZ.</b>Cells(3 * (n - 1) + 1, 6), <b>wsZ.</b>Cells(3 * (n - 1) + 3, 6)).MergeCells = True
Next n
Set wsQ = Nothing
Set wsZ = Nothing
End Sub

du musst immer die Objectpointer explizit nochmal vor .cells setzen.
lg Nancy
Anzeige
Bert war schneller;-)
28.03.2005 21:22:08
NE
... wieso geht denne aber html nimmer ?
lg Nancy
--
ps: hier war die Vorschau korrekt, ich raffs net ...
danke euch beiden :-) m.T.
28.03.2005 21:40:03
Reinhard
Hallo Nancy,
kann natürlich in die Hose gehen, aber in der Vorschau kommt dein b-Tag durch, wies gleich hier im Forum rüberkommt, k.A., mal schauen.
Ist wsQ und wsZ fett habe ich Hans überlistet, wenn nicht, hat seine Software gewonnen:-)
lg Reinhard
Sub Makro1()
Dim wsQ As Worksheet, wsZ As Worksheet
Dim anz&, n&
Set wsQ = Worksheets("Tabelle1")
Set wsZ = Worksheets("Tabelle2")
anz = wsQ.Range("A65536").End(xlUp).Row
For n = 1 To anz
wsQ.Range(wsQ.Cells(n, 1), Cells(n, 5)).Copy Destination:=wsZ.Cells(3 * (n - 1) + 1, 1)
wsZ.Range(wsZ.Cells(3 * (n - 1) + 1, 6), wsZ.Cells(3 * (n - 1) + 3, 6)).MergeCells = True
Next n
Set wsQ = Nothing
Set wsZ = Nothing
End Sub
Anzeige
yeah, klappte:-) o.w.T..
28.03.2005 21:43:32
Reinhard
for future;-)
28.03.2005 22:29:36
NE
mal davon abgesehen, dass jetz samst Einrückungen futsch sind,
hat's geklappt, ja ;-)))
Hach ich werd's wohl nie begreifen/mich dran gewöhnen,
dafür bin ich einfach zu alt ;-))
Egal wie, Reinhard, hauptsache es klappt jetzt :-)
BTW, bei solchen Sachen musst imho immer aufpassen,
so ein kleiner . 'dot' kann manchmal echt tückisch sein, wenn er fehlt ...,
hab wg. so'n scheiss schon Fälle erlebt, dass Excel als Prozess im Speicher blieb,
also immer wachsam mit Luchsaugen den debugger verfolgen ;-)
liebe Grüsse
Nancy
Ach, die Einrückungen
28.03.2005 22:55:19
Reinhard
krieg ich auch noch hin *hoff und guten Mutes bin*
hallo Nancy,
was mich wundert dass du nicht fragst WIE ich es denn gemacht habe?
Naja, werde Frauen nie verstehen *seufz*
lg Reinhard
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige