Registriert seit: 05.11.2016
Version(en): 2010
Hallo verehrtes Forum,
ich wende mich mal wieder mit einer Frage an Euch.
Ich möchte ein Workbook aus 12 Sheets nach dem Datumsbereich aus Datum1 und Datum2 durchsuchen.
Der Datumsbereich soll dann kopiert werden und in eine andere Datei geschrieben werden.
Der unten stehende Teil eines Codes basiert auf einer Datei, bei der ich ein einzelnes Tabellenblatt nach dem Datumsberich durchsuche und funktioniert wie gewünscht.
Es müsste also die Variable isheet (siehe letzte Zeile des Codes) ausgelesen werden.
Weiß jemand eine Lösung?
____________________________
For i = 2 To Sheets.Count
wsQuelle.Sheets(i).Select
For Each zelle3 In wsQuelle.Sheets(i).Range(Cells(8, 1), Cells(Rows.Count, 1).End(xlUp))
If wsQuelle.Sheets(i).Cells(zelle3.Row, 1) = Datum1 Then
irow3 = zelle3.Row
End If
Next zelle3
For Each zelle4 In wsQuelle.Sheets(i).Range(Cells(8, 9), Cells(Rows.Count, 1).End(xlUp))
If wsQuelle.Sheets(i).Cells(zelle4.Row, 1) = Datum2 Then
irow4 = zelle4.Row
End If
Next zelle4
Next i
wsQuelle.Sheets(isheet).Range(Cells(irow3, 1), Cells(irow4, 9)).Copy
Gruß
tmessers
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo,
wenn ich nichts falsch verstehe, dann dise Zeile:
wsQuelle.Sheets(isheet).Range(Cells(irow3, 1), Cells(irow4, 9)).Copy
so:
wsQuelle.Sheets(i).Range(Cells(irow3, 1), Cells(irow4, 9)).Copy
vor die Zeile
Next i
Man kann Deinen Code sicher effektiver machen, wenn man den genauen Tabellenaufbau kennt.
Wenn Du aber zufrieden bist mit dem Ergebnis, dann nutze ihn ruhig weiter.
Gruß Atilla
Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:1 Nutzer sagt Danke an atilla für diesen Beitrag 28
• tmessers
Registriert seit: 21.06.2016
Version(en): 2021
25.01.2017, 21:22
(Dieser Beitrag wurde zuletzt bearbeitet: 25.01.2017, 21:22 von Ego.)
Hallo tmessers,
aber bitte nicht das Präfix "ws" für ein Workbook.
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.
Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:1 Nutzer sagt Danke an Ego für diesen Beitrag 28
• tmessers
Registriert seit: 05.11.2016
Version(en): 2010
@atilla
Ich habe Deinen Tipp ausprobiert.
Die Umstellung erzeugt im Ablauf den "Laufzeitfehler '1004': Anwendungs- oder objektdefinierter Fehler".
Registriert seit: 05.11.2016
Version(en): 2010
@helmut
Natürlich nicht
.
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo tmessers,
man müsste den gesamten Code sehen, um zu erkennen wo was wie definiert wurde.
Und vielleicht könntest Du noch einmal mit andren Worten erklären was Du kopieren möchtest.
Gruß Atilla
Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:1 Nutzer sagt Danke an atilla für diesen Beitrag 28
• tmessers
Registriert seit: 21.06.2016
Version(en): 2021
Hallo tmessers
du must auch sicherstellen dass deine Zeilen-Varaiablen auch eine Zeilennummer und auch die richtigen Zeilennummern im richtigen Blatt haben.
also hinter "FOR I = 2...." folgende Zeilen einfügen:
und die Kopierzeile in eine If-Verzweigung setzen:
- IF irow3 > 0 AND irow4 >= irow3 THEN
- ...
- END IF
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.
Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:1 Nutzer sagt Danke an Ego für diesen Beitrag 28
• tmessers
Registriert seit: 21.06.2016
Version(en): 2021
25.01.2017, 22:00
(Dieser Beitrag wurde zuletzt bearbeitet: 25.01.2017, 22:00 von Ego.)
Hallo tmessers
sorry, hab ein zweites Mal auf antworten gedrückt.
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.
Registriert seit: 05.11.2016
Version(en): 2010
@Atilla
Ich habe eine Excel-Datei (XX). In dieser befindet sich der Code, der die geschlossene Datei (YY) öffnet.
In dieser zu öffnenden Datei (YY) befinden sich 13 Tabellenblätter
Das erste ist für mich nicht relevant. Die 12 folgenden Sheets entsprechen den 12 Monaten des Jahres.
In einem Userform in der Datei XX gebe ich Datum1 und Datum 2 ein.
Mein Code soll nun die Tabellenblätter (2) bis (13) in YY nach dem Datumsbereich durchsuchen.
Danach soll dieser Bereich in XX kopiert werden.
Wie bereits geschrieben, funktioniert der Code, wenn ich nur ein Tabellenblatt durchsuchen muss.
Gruß
tmessers
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo,
was Du beachten und/oder ergänzen solltest hat Helmut schon erklärt.
Da Du dich in der aktiven Mappe in den selectierten Tabellen bewegst,
ginge unter Berücksichtigung der von Helmut erwähnten Dinge folgendes:
Code:
For i = 2 To Sheets.Count
irow3 = 0
irow4 = 0
Sheets(i).Select
For Each zelle3 In Range(Cells(8, 1), Cells(Rows.Count, 1).End(xlUp))
If Cells(zelle3.Row, 1) = Datum1 Then
irow3 = zelle3.Row
End If
Next zelle3
For Each zelle4 In Range(Cells(8, 9), Cells(Rows.Count, 1).End(xlUp))
If Cells(zelle4.Row, 1) = Datum2 Then
irow4 = zelle4.Row
End If
Next zelle4
If irow3 * irow4 > 0 Then
Range(Cells(irow3, 1), Cells(irow4, 9)).Copy
End If
Next i
Gruß Atilla
Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:1 Nutzer sagt Danke an atilla für diesen Beitrag 28
• tmessers