Ausgangssituation
Beispiel:
Im ersten Arbeitsblatt Vokabelliste wird
in Zelle A1 der Name der Lektion eingetragen
in A2 das spanische Wort / der spanische Satz eingetragen;
in B2 das deutsche Wort / der deutsche Satz eingetragen;
in C3 zusätzliche Hinweise, zum Beispiel Perfecto eingetragen;
Die gesamte zu erstellende neue Liste sollte nicht mehr als 102 Einträge enthalten,
mit anderen Worten 102 Zeilen werden maximal ausgefüllt.
Zunächst wird die alte vorhandene Liste gelöscht und dann die neuen Werte bis maximal Zelle C 103 eingetragen. (A1 enthält den Namen der Lektion)
Das 2. Arbeitsblatt Lernkarteien drucken enthält zunächst keine Werte, auf der sollen pro DIN A4 acht Karteikarten erstellt werden, Vorderseite der Lernkartei in Spalte A und B, Rückseite der Lernkarteien Spalte C und D, wobei die Rückseite spiegelverkehrt die Vokabeln wieder gibt.
Die Zellen A1:A12 bis C1:12 sind bereits vorformatiert, Zellen sind unterschiedlich hoch und besitzen zum Teil Trennlinien für Karteikarten, mit anderen Worten: 2 DIN A4 Seiten sind für den Druck von 8 Karteikarten, Vorder- und Rückseite bereits vorbereitet.
Eine Lernkartei besteht aus 3 Zellen; Beispiel:
A1 Name der Lektion, A2 = Vokabeleintrag Spanisch, A3 Zusatz;
B1 = Name der Lektion, B2 = Vokabeleintrag Spanisch, B3 Zusatz;
C1 = Name der Lektion, C2 = Vokabeleintrag Deutsch, C3 Zusatz;
D1 = Name der Lektion, D2 = Vokabeleintrag Deutsch, D3 Zusatz.
Bevor die Vokabel aus dem Arbeitsblatt Vokabelliste per vba in das Arbeitsblatt Lernkarteien drucken kopiert werden, müssen weitere vorformatiere Seiten hinzugefügt werden, abhängig von der Anzahl der eingetragenen Vokabeln im Arbeitsblatt Vokabeln.
Anzahl der eingetragenen Vokabeln werden ermittelt durch:
Sheets("Vokabelliste").Select
Anzahl_der_Vokabeleinträg = .Cells(Rows.Count, 1).End(xlUp).Row
Beispiel: sind im Arbeitsblatt Vokabeln 40 Zeilen aufgelistet, erhalte ich den Wert 40.
Von 40 wird eine 1 abgezogen, da in A1 Name der Lektion steht.
Entsprechend müssen im Arbeitsblatt Lernkarteien drucken 18 formatierten Seiten, bei 6 Vokabeleinträgen 2 Seiten hinzugefügt werden.
Nun zu meinem Problem:
Wenn nur 4 Karteikarten, Vorderseite und Rückseite, also 2 Seiten erstellt werden müssen, kann ich zur Not das noch zu Fuß machen, in dem die Einträge aus dem Arbeitsblatt Vokabelliste in das Arbeitsblatt Lernkarteien drucken per Befehl übertragen werden. Ganz wichtig: Der jeweilige Eintrag soll so kopiert werden, dass auch die Formatierung mit kopiert wird, zum Beispiel Zeilenumbruch, fett usw.
Beispiel für zwei Lernkarteikarten:
Application.ScreenUpdating = False
Sheets("Vokabelliste").Select
Range("A2").Select erster spanische Eintrag
Selection.Copy
Sheets("Liste drucken").Select
Range("A2").Select kopiert ersten spanischen Eintrag in A2, in A1 steht die Name der Lektion
ActiveSheet.Paste
Sheets("Vokabelliste").Select
Range("A3").Select zweite spanische Eintrag
Sheets("Liste drucken").Select
Range("B2").Select
B2, weil die zweite Karteikarte zwar ab B1 anfängt, aber in B1 steht die Name der Lektion steht
ActiveSheet.Paste
Sheets("Vokabelliste").Select
Range("B3").Select B3 zweiter deutsche Eintrag
B3, weil die Rückseite der Lernkarteikarte spiegelverkehrt übertragen werden muss
Selection.Copy
Sheets("Liste drucken").Select
Range("C2").Select Rückseite der 1. Lernkarteikarte, in C1 steht die Name der Lektion
ActiveSheet.Paste
Sheets("Vokabelliste").Select
Range("B2").Select B2 erster deutsche Eintrag
B2, weil die Rückseite der Lernkarteikarte spiegelverkehrt übertragen werden muss
Selection.Copy
Sheets("Liste drucken").Select
Range("D2").Select
D2, weil die Rückseite der zweiten Karteikarte ab D2 anfängt, in D1 steht die Name der Lektion
ActiveSheet.Paste
Sheets("Vokabelliste").Select
Und so weiter, und so weiter.
Application.ScreenUpdating = True
Zusätzlich müssen noch der Name der Lektion und der zusätzliche Hinweise übertragen werden.
Wie geschrieben:
bei 8 Lernkarteikarten könnte ich das ja noch zu Fuß machen, aber bei mehr als 8 Karteikarten hört der Spaß auf, verliere ich den Überblick, außerdem gilt glaube ich immer noch der Satz: Computer sind dumm, aber fleißig. Warum also nicht die richtigen Routinen benutzen, die mir die Fleißarbeit abnehmen.
Leider habe ich erst vor 20 Tagen mit VBA angefangen, bin also blutiger Laie.
Was ich mir vorstellen könnte, weiß aber nicht wie das geht, dass man das ganze in einer Schleife durchführt. Allerdings müssten dann die einzelne zu kopierenden Zelle bei jedem Durchgang einen neuen Wert zugewiesen bekommen; Beispiel erste Durchlauf Range (A2).Select, zweite Durchlauf Range(A3).Select, erste Durchlauf Range (B2).Select, zweite Durchlauf Range(B5).Select
Das gleiche gilt für die Zellen, in denen der Wert kopiert werden soll.
Zusätzlich wird das Ganze noch dadurch kompliziert, dass Name der Lektion und Zusatz nur dann in die Lernkarteikarten kopiert werden sollen, wenn in die Lernkarteikarte auch ein Wert kopiert wurde.
Hier müsste dann wahrscheinlich mit einer If-Anweisung gearbeitet werden.
Beispiel: Wenn 9 Karteikarten erstellt werden, werden zwar 4 Seiten zum Druck vorbereitet, aber auf Seite 3 und 4 gibt es nur eine einzige Karteikarte, entsprechend soll auf Seite 3 und 4 nur in der neunten Lernkarteikartenur in der neunten Lernkarteikarte, Vorder- und Rückseite der Name der Lektion und Zusatz eingetragen werden.
Für einen Lösungsvorschlag wäre ich sehr, sehr dankbar.