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.

Zellbereiche verschieben/ausblenden wenn...
#1
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.


Angehängte Dateien
.xlsx   Kursanmeldungen.xlsx (Größe: 26,03 KB / Downloads: 7)
Antworten Top
#2
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)
Antworten Top
#3
Hallo Armin

Vielen Dank für deine Antwort, resp. Frage.

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.

mfg, Ebi
Antworten Top
#4
Hallöchen,

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)
Antworten Top
#5
Hallo André

Vielen Dank für deine Hilfe.

Wir sind einen grossen Schritt weitergekommen, aber zwei Punkte sind noch offen:

Ich habe im Code nur folgendes angepasst:

Code:
arrKurse = Array("D13", "I13", "N13", "D29", "I29", "N29", "D45", "I45", "N45", "D61", "I61", "N61")

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.

Danke nochmals für deine Unterstützung
Gruss, Ebi
Antworten Top
#6
Hallöchen,

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)
Antworten Top
#7
Hallo

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:
  • schauan
Antworten Top


Gehe zu:


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