Agenda / Wochenplan programmieren
#21
Habe nun die Druckroutine auf nen Preview geändert:

Code:
Sub druck()
  Dim tbs(), i As Long, x As Integer

  Application.ScreenUpdating = False 
  x = 0
  For i = 0 To Worksheets.Count - 1
   
    Select Case Worksheets(i + 1).Name
     
      Case "Eingaben", "Vorlage", "Titelseite"
     
      Case Else
              ReDim Preserve tbs(x)
              tbs(x) = Worksheets(i + 1).Name
              x = x + 1
    End Select

  Next
   
  Worksheets(tbs()).PrintPreview
   
  Application.ScreenUpdating = True
 
End Sub

Wenn ich deine Routine richtig verstanden habe, dann sammelt sie alle einzelnen Tabellenblätter, ausser "Eingaben" und "Vorlage" und ordnet diese hintereinander zu einem Druckauftrag.
Komischerweise wird dabei konstant nur eine Seite angezeigt. Da muss sich in der Schlaufe wohl ein Fehler eingeschlichen haben?
Ansonsten ist diese Version fast noch besser, als ein .pdf zu erstellen, von welchem man anschliessend die ersten Seiten nicht ausdrucken soll. Via Druckerauswahl lässt sich die Ausgabe ja dennoch in ein .pdf umleiten.

Korrigiere: Bei der Preview wird lediglich die erste Seite angezeugt. Druckt man den Auftrag anschliessend via Microsoft Print to pdf, dann wird das ganze Dokument abgespeichert. Anscheinend werden die Seiten erst beim tatsächlichen Druckauftrag in eine Datei hinereinandergesetzt. Geht wohl nicht anders (die PrintOut Version ist einfach etwas zu heikel, wenn dann aufn Schlag 50 Seiten aus dem Drucker flattern)
Top
#22
Hallöchen,

mit Deinem Druckmakro fügst Du die Tabellenblätter zu einem Auftrag zusammen und da kommt dann alles raus, was dazu gehört.

Wenn man das einschränken will gibt es nun verschiedene Wege, allerdings ist wohl immer zumindest eine Auswahl nötig.

- beim kompletten Speichern als pdf dann zum Ausdruck die gewünschten Seiten wählen
- zum "Ausdruck" eine Sicherheitsabfrage programmieren, wo die Blattauswahl bestätigt werden muss
- auf einem Blatt eine Liste der Blätter generieren - geht auch per Makro oder Formel -
dort die gewünschten Blätter ankreuzen und im Makro als Bedingung verarbeiten
- andere Auswahlmöglichkeiten programmieren, z.B. Auswahl des Tages oder ...
- auf den Blättern Druckbereiche festlegen


Ansonsten, oT-Beiträge wandern zuweilen in's Plaudern oder in's Archiv, mach ich hier wahrscheinlich auch. Wenn zwei sich streiten, ist das entgegen dem Sprichwort nicht unbedingt zur Freude des Dritten Sad und ein öffentlicher geführter Streit eskaliert vielleicht noch mehr ..
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#23
"Fullquote #19": Hui, haben wir es jetzt hinter uns? Das war ja eine komplette Kanonade. Da Du jetzt ordentlich schreibst (Fließtext und klein/groß), deren Nichtbeachtung mich zu "nicht so ernst nehmen" verleitet hatte, biete ich Dir einen Waffenstillstand an. Ich würde das jetzt unterlassen.
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Top
#24
Neue Idee: Jetzt, wo die Grundlage eigentlich steht:

Gesucht ist eine Routine, die an einem bestimmten Tag einen Eintrag in das Unterrichtsheft schreibt. Dies könnte man für Geburtstage, Ferien, ... gebrauchen....
In der Tabelle "Eingaben" steht in der Zelle B18 das Datum und in C18 das Ereignis ("Geburtstag Peter"). Dieses soll automatisch beim entsprechenden Tag in der Zelle 5 stehen.

Der Ablauf wäre wahrscheinlich:
- Anhand des Datums die entsprechende Tabelle (zum Glück mit dem Montagsdatum versehen) herausfinden und dann das Ereignis in die Zelle schreiben.
Top
#25
Ich hab's gewusst. Da sind sie, meine "eigentlichen Inhalte" (#3). Dass die kommen würden, war so sicher wie das A in der K. Ob Salamitaktik (hier ja) oder nicht.
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Top
#26
Du bist der Zeit voraus, Bravo (damit lassen sich sicher viele Konflikte vermeiden)
Salamitaktik ja: Ich weiss nicht, wie du ein neues Projekt aufgleist. Ich fange zuerst mal mit dem Grüst an und baue es dann aus. Das würd ich nicht als Salamitaktik (wegschneiden), sondern eher als Torten-schichten (aufbauend) bezeichnen.... Ich ma eh gerne süsses ;)
Wie dem auch sei, konstruktive Ideen sind gefragt. Ich habs mit einer Select Case Abfrage versucht:

Select Case Weekday(Range("B18"))
      Case 2: Worksheets(Worksheet.Name = Range("B18")).Activate
      Case 3: MsgBox "Heute ist Dienstag"
      Case 4: MsgBox "Heute ist Mittwoch"
      Case 5: MsgBox "Heute ist Donnerstag"
      Case 6: MsgBox "Heute ist Freitag"
 End Select


Allerdings klemmt es noch bei meiner Abfrage: die Tabellennamen entsprechen genau den Montagsdatum der betreffenden Woche, also z.B. 14.09.2020. Mein Experimentiergeburtstag ist der 14.09.2020. Dieser stehtin Zelle B18. Nun möchte ich also die Tabelle mit dem Namen B18 aktivieren, um dort den Genurtstag einzutragen.
Top
#27
In Foren wird ganz gern gesehen, wenn der Frager weiß, wohin er möchte. Von Anfang an. Dann müssen in vielen Fällen keine Umwege genommen werden.
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Top
#28
ok, das nehm ich gerne zur Kentniss
Top
#29
Darf ich hier nochmals um eine Hilfe fragen? Mein Decoder gibt mir immer eine Fehlermeldung aus für meine Select Case Routine.

Wie vergleiche ich das Datum aus einer Zelle mit dem Tabellennamen? Ich hab schon versucht, den Inhalt der Zelle als String zu definieren und dann den Case auszuwerten, aber das funktioniert auch nicht. Wäre froh um eine weitere Gedankenspritze eines Experten.
Hab der Einfachheit halber nochmals eine neue Beispieldatei aufgesetzt, jungfräulich und ohne Schnick-schnack.


Angehängte Dateien
.xlsm   Zelle Tabellenname Abgleich.xlsm (Größe: 21,04 KB / Downloads: 6)
Top
#30
Hallo,

könntest Du deine Datei hier hochladen?
Gruß Stefan
Win 10 / Office 2016
Top


Gehe zu:


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