Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1480to1484
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
Inhaltsverzeichnis

Formeln für If-Anweisung beziehungsweise Schleifen

Formeln für If-Anweisung beziehungsweise Schleifen
21.03.2016 17:50:10
Peter
Projekt: Erstellen von Lernkarteien
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.

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formeln für If-Anweisung beziehungsweise Schleifen
21.03.2016 18:12:26
Michael
Hallo Peter,
das ist eigentlich ein typisches "Serienbrief"-Problem.
Der gedankliche Lösungsansatz ist, in einem Tabellenblatt die Daten und in einem weiteren das "Formular" für den Ausdruck vorzubereiten - so weit hast Du das ja.
Im Formular verwendest Du am besten =INDEX, und zwar so, daß Du durch eine einfache Änderung einer Seitennummer jeweils die nächsten 8 Vokabeln ins Formular bekommst.
Zum Ausdrucken wiederum mußt Du dann nur die Seitennummer hochzählen...
Lad uns bitte ne Beispielmappe hoch, dann läßt sich das sehr einfach reinbauen.
Schöne Grüße,
Michael

Anzeige
AW: Formeln für If-Anweisung bzw Schleifen
22.03.2016 15:02:32
Peter
Hallo Michael,
zunächst einen ganz lieben Dank, dass du dir die Mühe gemacht hast, meine lange Beschreibung zu lesen.
Ich muss gestehen, dass ich sowohl was Excel, als auch VBA anbelangt ein blutiger Laie bin, ich mich daher auf meine alten Tage erst einarbeiten muss, weil mich meine Tochter darum gebeten hat.
Das Einfachste wäre sicher, das ganze in Excel und Word zu machen, aber das genau möchte meine Tochter nicht.
Deinem Hinweis die Serienfunktion zu nutzen, werde ich nachgehen. Danke
Ich befürchte allerdings, dass das nicht funktionieren wird, weil auf der Rückseite eines Blattes die Vokabeln in spiegelverkehrter Reihenfolge eingetragen werden müssen.
Beispiel:
Vorderseite:
1. Lernkarteikarte: 1. spansicher Satz
2. Lernkarteikarte: (wird rechts von der 1. Karteikarte platziert) 2. spanischer Satz
Rückseite:
1. Lernkarteikarte: 2. deutscher Satz
2. Lernkarteikarte: (wird rechts von der 1. Karteikarte platziert) 1. deutscher Satz
Mit anderen Worten: eine vorhandene Liste kann nicht einfach von oben nach unten beziehungsweise rechts nach links abgearbeitet werden.
In der Vokabelliste steht zum Beispiel.
Zeile A2 = 1. spanisches Wort
Zeile B2 = 1. deutsche Wort
Zeile A3 = 2. spanisches Wort
Zeile B3 = 2 deutsche Wort
Beispiel für zwei Lernkarteien
Weil die Spiegelung berücksichtigt werden muss, wäre in dem Fall nach meiner Meinung so vorzugehen:
1. Ermittele den Wert in der Zelle A2 und kopiere diesen auf einem anderen Blatt in Lernkarteikarte 1
2. Ermittele den Wert in der Zelle A3 und kopiere diesen auf einem anderen Blatt in Lernkarteikarte 2
Für die Rückseite der Karteikarte:
1. Ermittele den Wert in der Zelle B3 und kopiere diesen auf einem anderen Blatt in Lernkarteikarte 1
2. Ermittele den Wert in der Zelle B2 und kopiere diesen auf einem anderen Blatt in Lernkarteikarte 2
Mit anderen Worten: wegen der erforderlichen Spiegelung lese ich für die Rückseite 1. Lernkarteikarte, nicht den Wert aus Zelle B2, sondern aus Zelle B3
Der 2. Grund, warum ich befürchte, dass das mit dem Seriendruck nicht geht, ist ein technisches Problem. Ihr Drucker kann nicht randlos drucken.
Mit Excel kann ich das so hinbekommen, dass trotz gesetzter Ränder von 0,5 alle gedruckten Karteien gleich hoch erscheinen, 7,48 cm. Das bekommt ich nur deshalb hin, weil die Zellen für den Vokabeleintrag unterschiedlich hoch sind. Außerdem werden kleine Schneidemarken gesetzt.
Solltest du trotzdem eine Beispieldatei bezüglich Seriendruck in Excel haben, wäre ich dir dankbar, wenn du mir einen Link schicken könntest.
Noch x vielen Dank, Peter

Anzeige
bitte andersrum
22.03.2016 15:57:15
Michael
Hi Peter,
es ist mir, ehrlich gesagt, zu mühsam, eine Datei nach Deinen Angaben zu basteln - zumal DU die ja bereits vorliegen hast!
Lade die Datei hoch und ich baue Dir die passenden Formeln und dann das Makro ein...
Schöne Grüße,
Michael
P.S.: eine grundsätzlich ähnliche Geschichte war übrigens hier:
https://www.herber.de/forum/archiv/1364to1368/t1365207.htm

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige