Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Tabellenblatt mit Wert finden, Tabellenblattnummer ausgeben
#1
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
Antworten Top
#2
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:
  • tmessers
Antworten Top
#3
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:
  • tmessers
Antworten Top
#4
@atilla

Ich habe Deinen Tipp ausprobiert.
Die Umstellung erzeugt im Ablauf den "Laufzeitfehler '1004': Anwendungs- oder objektdefinierter Fehler".
Antworten Top
#5
@helmut

Natürlich nicht Blush .
Antworten Top
#6
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:
  • tmessers
Antworten Top
#7
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:
  • irow3 = 0
  • irow4 = 0
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:
  • tmessers
Antworten Top
#8
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.





Antworten Top
#9
@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
Antworten Top
#10
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:
  • tmessers
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste