28.03.2018, 08:58 (Dieser Beitrag wurde zuletzt bearbeitet: 28.03.2018, 09:16 von WillWissen.
Bearbeitungsgrund: Smilies deaktiviert
)
Hallo zusammen
Da ich mich mit VBA wenig bis gar nicht auskenne, hoffe ich auf eure Hilfe.
Es geht um ca. 50 Kursanmeldungen, in der Beispieldatei habe ich nur 9 Stück erfasst, damit die Datei nicht so gross wird.
Das Ziel ist, dass das Tabellenblatt ausgedruckt wird, aber von diesen 50 Kursen nur jene Bereiche gedruckt werden, welche auch durchgeführt werden.
Also wenn die gelb markierte Zelle (z.B.) D13 grösser 3 ist, soll der Bereich stehen bleiben, ansonsten ausgeblendet werden. Alternative: Wenn die gelb markierte Zelle grösser 3 ist, soll der betroffene Bereich in eine neue Tabelle kopiert werden, welche dann am Schluss ausgedruckt wird.
Das Problem ist hierbei auch noch, dass das Blatt maximal drei Bereiche nebeneinander haben soll und sonst eine neue „Reihe“ beginnen soll. Im zweiten Tabellenblatt sieht die Datei eigentlich so aus, wie sie in diesem Beispiel am Schluss aussehen müsste.
Der Bezug der gelb markierten Zellen bleibt immer gleich: D13, I13, N13, D29, I29, N29, D45, etc.
Die Grösse der Bereiche bleibt dabei immer gleich. 1. Reihe: B1:F16 / G1:K16 / L1:P16 2. Reihe: B17:F32 / G17:K32 / L17:P32 3. Reihe: B33:F48 / etc.
Hallo, Wozu kopieren? Du kannst auch von der "Kurse" drucken! Aber wie soll gedruckt werden? Jeden Kurs auf einer Seite? Oder wie sonst? Beachte bei mehreren Feldern können diese auch "zerteilt" werden!!
Grüße aus Nürnberg Armin Ich benutze WIN 10 (64bit) und Office 19 (32bit)
Von mir aus braucht es kein neues Tabellenblatt, ich kann auch direkt vom Blatt "Kurse" ausdrucken. Aber da möchte ich eben nur diejenigen Bereiche ausdrucken, welche ein bestimmte Anzahl an Anmeldungen haben und somit auch durchgeführt werden. Das hilft mir bei der Übersicht der stattfindenden Kurse und spart vor allem eine grosse Menge an Toner und Papier, welches nicht umsonst gedruckt wird.
Von den 50 Anmeldungen sind es vielleicht 12-16 an der Zahl. Es wären pro Blatt drei Bereiche nach rechts (s. Blatt Kurse Ausdruck) und fünf Bereiche nach unten. Also 3x5 pro Blatt. Falls es mehr wie 15 Anmeldung wären, gibt es halt ein neues Blatt, das spielt keine Rolle.
Ich hoffe ich konnte es einigermassen verständlich erklären.
hier mal ein Makro für das extra Blatt. Nicht übernommen wird dabei die Spalte A (T1...T6), die könntest Du aber vorbelegen und T1...T6 auch per Formel "ausblenden".
Code:
Sub ZusammenFassen() 'Variablendeklarationen 'Integer Dim iCnt%, iCntZ%, iCntS%, arrKurse 'Array fuellen arrKurse = Array("D13", "I13", "N13", "D29") 'Zaehler vorbelegen iCntZ = 1: iCntS = 2 'Schleife ueber alle Kurse For iCnt = 0 To UBound(arrKurse) 'Wenn mehr als 3 Teilnehmer enthalten sind If Range(arrKurse(iCnt)) > 3 Then Range(arrKurse(iCnt)).Offset(-12, -2).Resize(16, 5).Copy Sheets("Kurse (Ausdruck)").Cells(iCntZ, iCntS) 'Spaltenzaehler hochzaehlen iCntS = iCntS + 5 'Wenn Spaltenzaehler = 4, dann If iCntS = 12 Then 'Spaltenzaehler zuruecksetzen udn Zeilenzaehler hochzaehlen iCntS = 1: iCntZ = iCntZ + 16 'Ende Wenn Spaltenzaehler = 4, dann End If 'Ende Wenn mehr als 3 Teilnehmer enthalten sind End If 'Ende Schleife ueber alle Kurse Next
End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
1. Nun kopiert es mir wirklich nur die durchzuführenden Kurse, aber im ersten Abschnitt füllt es mir nur zwei Kurse aus, statt drei und im nächsten Abschnitt macht's keinen Umbruch mehr nach drei Kursen, sondern es füllt alle nebeneinander aus.
2. Wie sage ich dem Code, dass er erst ab der Spalte B kopieren soll, damit ich die Spalte A frei habe für T1-T6? Beim Test wurde ab A18 kopiert, statt ab B18.
Das Testblatt mit dem Tab Kurse (Ausdruck) habe ich mit hochgeladen.
Wo da iCntS = 1 steht muss iCntS = 2 hin. Ich hatte noch was geändert und wohl nicht alles bis dorthin mitgenommen. Den Rest schau ich mir am PC an, bin gerade am Smartphone.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
iCntS = 2 hat hingehauen und das mit dem Umbruch fast auch. Nur dass er mir jetzt immer nur zwei Kurse nebeneinander einfügt, statt drei.
Dann habe ich die Zeile
Code:
If iCntS = 12 Then
auf
Code:
If iCntS = 17 Then
geändert und siehe da, es hat geklappt. :28:
Ich werde nun das ganze Dokument nochmals durchtesten und dir dann Bescheid geben, wie's aussieht. Für dich also für's Erste erledigt. Vielen herzlichen Dank nochmals.
Folgende(r) 1 Nutzer sagt Danke an ebitanem für diesen Beitrag:1 Nutzer sagt Danke an ebitanem für diesen Beitrag 28 • schauan