Clever-Excel-Forum

Normale Version: Drucken in Abhängigkeit von Bereichen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen,

folgendes Problem:
Ich habe eine Tabelle mit insgesamt 27 Reitern. 

Die Reiter 1 bis 3 benötige ich je einmal ausgedruckt. 
Die Reiter 4 bis 7 benötige ich nur in ausgedruckter Form, wenn entweder im Bereich D3:D19 oder im Bereich A23:D44 oder im Bereich A122:C143 auf dem jeweiligen Reiter etwas geschrieben steht.
Die Reiter 8 bis 27 sollen ausgedruckt werden, wenn im Bereich A23:D44 oder im Bereich A122:C143 auf dem jeweiligen Reiter etwas geschrieben steht.

Ich würde dies gerne über ein Makro lösen, welches mir auf Knopfdruck alle entsprechenden Reiter auf einmal ausdruckt. 

Darüber hinaus befindet sich in einem anderen Bereich ein Wasserzeichen. Dadurch, dass in manche Zellen sehr viele Zeichen stehen und Textumbruch aktiviert ist, wird dieses Wasserzeichen mitunter sehr klein. Gibt es eine Möglichkeit die Größe des Wasserzeichens an die Größe eines Bereichs zu koppeln?

Zu guter Letzt: Gibt es eine Möglichkeit Reiternamen sowie das hinzufügen neuer Reiter für Benutzer zu sperren?

Vielen Dank im Voraus für jeden Lösungsvorschlag bzw. Tipp.
Hallo,

... zum Einstieg biete ich Dir mal so etwas an.
Mir ist klar, daß das erst mal nur eine Teillösung Deiner Wünsche darstellt.
Schließlich wurde die Datei ja auch nicht für Dich gemacht  :19:
Aber schau'n wir mal, dann seh'n wir schon.
Hallo, 

zunächst vielen Dank. Das sieht grundsätzlich ganz gut aus. Finde die Idee vorher anzeigen zu lassen welche Seiten erkannt wurden ziemlich gut. Leider kann ich an dem Bild keinen VBA Code ersehen. Falls du mir da was zur Verfügung stellen kannst würde ich mal schauen ob ich es ggf. auf meine Bedürfnisse abändern kann.
Hallo,

... na, dann wünsche ich Dir mal ein gutes Gelingen  :05:
Puh, da hab ich mir ja schön was eingebrockt, hätte vielleicht erwähnen sollen, dass ich mit meinen VBA Kenntnissen noch ganz am Anfang stehe und durch deine Makros so gar nicht durchsteige. :69:  Aktuell sieht es bei mir so aus:
Code:
Sub Drucken()

With ActiveSheet.PageSetup
     .Orientation = xlPortrait
     .FitToPagesWide = 1
     .Zoom = False
     .PrintArea = "$A$1:$D$51"
End With

ActiveWindow.SelectedSheets.PrintOut Copies:=2


With ActiveSheet.PageSetup
.Orientation = xlPortrait
     .FitToPagesWide = 1
     .Zoom = False
     .PrintArea = "$A$100:$D$151"
End With

ActiveWindow.SelectedSheets.PrintOut Copies:=1


End Sub
damit hab ich zumindest schonmal meine Druckbereiche definiert, wenn auch nur auf dem jeweils aktiven Reiter. Wie inkludiere ich da jetzt am besten die Prüfung der Bereiche und drucke nicht, wenn dort nichts steht? Sorry aber bin VBA technisch wirklich noch nicht gut aufgestellt.
Hallo,

versuche es mal so

Code:
Sub prcDrucken()
   Dim lngC As Long
  
   For lngC = 1 To 27
      With Worksheets(lngC)
         Select Case lngC
            Case 1 To 3
               .PrintOut
            Case 4 To 7
               If WorksheetFunction.CountA(.Range("D3:D19"), .Range("A23:D44"), .Range("A122:C143")) Then .PrintOut
            Case Else
               If WorksheetFunction.CountA(.Range("A23:D44"), .Range("A122:C143")) Then .PrintOut
         End Select
      End With
   Next lngC

End Sub
Hallo,

wenn Du willst, daß ich Dir helfe, dann zeige Deine Datei.
Ohne Datei und genauen Infos darüber, was jeweils passieren soll, kann zumindest ich Dir nicht helfen.

Übrigens: Ich hatte Dich ja in den obigen Post's schon vorgewarnt, daß die von mir gelieferte Datei nicht
auf Deine Wünsche zugeschnitten und der Umbau entsprechend nötig ist. Da Du aber der Meinung warst,
es selbst versuchen zu wollen ... Nun, Versuch macht kluch  :19:
Hallo Stefan, Hallo Peter,

erstmal vielen Dank für die bisherige Unterstützung. Habe mir Stefans Code mal vorgenommen und ein bisschen probiert meine Einstellungen einzubetten.
Code:
Sub prcDrucken()
  Dim lngC As Long
 
  For lngC = 1 To 28
     With Worksheets(lngC)
        Select Case lngC
           Case 2 To 4
                    .Orientation = xlPortrait
     .FitToPagesWide = 1
     .Zoom = False
     .PrintArea = "$A$1:$E$43"
     .PrintOut Copies:=1
           Case 5 To 8
              If WorksheetFunction.CountA(.Range("D3:D19"), .Range("A23:D44")) Then .Orientation = xlPortrait
     .FitToPagesWide = 1
     .Zoom = False
     .PrintArea = "$A$1:$D$51"
     .PrintOut Copies:=2
     .PrintArea = "$A$100:$D$151"
     .PrintOut Copies:=1
           Case 9 To 28
              If WorksheetFunction.CountA(.Range("A23:D44")) Then .Orientation = xlPortrait
     .FitToPagesWide = 1
     .Zoom = False
     .PrintArea = "$A$1:$D$51"
     .PrintOut Copies:=2
     .PrintArea = "$A$100:$D$151"
     .PrintOut Copies:=1
        End Select
     End With
  Next lngC

End Sub
das ist das Ergebnis bisher, leider funktioniert es so noch nicht da meine unterschiedlichen Druckbereiche nicht akzeptiert werden. Ich habe mal exemplarisch eine Datei angefügt, was ich drucken will und was nicht, habe jetzt nicht alle tabellenreiter eingefügt, da 5-8 bzw. 9-28 jeweils identisch sind. Bei den Druckeinstellungen ist mir Hochformat, sowie alle Spalten auf einer Seite wichtig. Hoffe es wird so klarer. Wie gesagt, vielen Dank für eure Unterstützung.
Hallo,

einmal mehr ...

Du hast uns in Deinem Post eine *.xlsx-Datei gezeigt.

Man kann keine Makros in einer *.xlsx-Datei nutzen.
Diese Datei kennt keine Makros!!!!  und weil sie damit nicht umgehen kann, schickt sie diese Fremdkörper umgehend und ohne Warnung in den Excel-Himmel.

Eine Datei mit Makros muß zwingend als *.xlsb-Datei oder als *.xlsm-Datei gespeichert werden.
Sonst wird das bis zum "Jüngsten Tag" nichts.

... und nun ruft mein Kopfkissen  :05:
Hallo Peter, 
guten Morgen. Mein Fehler, habe die Beispielmappe im falschen Format hochgeladen, meine originaldatei ist natürlich eine Mappe mit Makros. Die hochgeladene soll lediglich zur Erklärung dienen.
Seiten: 1 2