Clever-Excel-Forum

Normale Version: VBA für Druckvorschau mit bestimmten Zellenwert
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe Mitglieder!



Ich würde gern bei meinem komplexen Excel-Preiskalkulator durch einen Button (Print All) nur all jene Sheets/Blätter in der Druckvorschau sehen wollen die in der Zelle M1>=1 enthalten sind

(die 1 entsteht sobald man zB im Blatt "Winter Equipment" auf open drückt und somit eine Maschine auswählt und somit auch in der Spalte L über der Wert "x" entsteht den ich für die Vorfilterung (Button - Filter All) benötige).

Gesamt habe ich mehrere Blätter (zirka 10) in meiner Excel.



Alternativ könnte man auch sagen, wenn im Blatt "Kundendaten" in einer der Zellen M30:M32 den Wert "Wahr" aufweist

(der sich wiederum eh auf die Zelle M1 der jeweiligen Blätter bezieht).



Jene Blätter die keine Wert >=1 in Zelle M1 ausweisen sollten nicht in der Druckvorschau angezeigt werden.



PS: Ein weiterer Button für das selbe Prinzip aber für eine PDF-Vorschau wäre eben so wünschenswert ?



Danke im Voraus für eure Hilfe & BG!
Hallöchen,

wenn Du auf "Open" drücken kannst, vermute ich erst mal, dass Du in Deiner Datei Code hast und mit VBA zumindest etwas umgehen kannst.

Du kannst z.B. das Drucken mehrerer ausgewählter Blätter aufzeichnen und bekommst was in der Art:

Code:
Sub Makro1()
    Sheets(Array("Tabelle1", "Tabelle4")).Select
    Sheets("Tabelle1").Activate
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
End Sub

Welche Du auswählst, kannst Du in einer Schleife über alle Blätter prüfen. Ich habe hier mal einem Text 2 Blätter zugewiesen - Du kannst in der Schleife prüfen, was in M1 steht und abhängig davon den Blattnamen in den Text aufnehmen. Das bekommst Du hin?
Könnte man übrigens auch gleich mit einem Array machen.

Code:
Sub Makro2()
Dim strTxt
strTxt = "Tabelle1,Tabelle4"
    Sheets((Split(strTxt, ","))).Select
    Sheets("Tabelle1").Activate
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
End Sub
Hallo!

Danke frü deine rasche ANtworten.

Jedoch will ich keine Blätter mannuell auswählen, sondern Excel soll einfach alle Blätter in die Druckvorschau bringen die einen gewissen Wert (zum Beispiel ">=1") in "Zelle M1" aufweisen.
Hi,

was hindert dich den Inhalt von StrTxt selbst im Makro zu erzeugen?


Code:
Dim Blatt as Worksheet
For Each Blatt in Thisworkbook.Worksheets
    If Baltt.Range("M1") >= 1 Then    'Bedingung um Blatt zu übernehmen
        strTxt = strTxt & "," & Blatt.Name
    End If
Next Blatt
strTxt = Mid(strTxt, 2)    'erstes Komma abtrennen
Dafür hab ich zu wenig oder die falschen Excel-Kenntnisse. ;)

Ich denke mir wäre auch geholfen, wenn der Druckbefehl (Sub) einfach alle Leerzeilen in den Arbeitsmappen ignoriert.

BG!