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.

Drucken in Abhängigkeit von Bereichen
#1
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.
Gruß

Stoffo
Antworten Top
#2
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.


Angehängte Dateien Thumbnail(s)
   
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#3
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.
Gruß

Stoffo
Antworten Top
#4
Hallo,

... na, dann wünsche ich Dir mal ein gutes Gelingen  :05:


Angehängte Dateien
.xls   Drucken mit Seitenwahl.xls (Größe: 186 KB / Downloads: 4)
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
[-] Folgende(r) 1 Nutzer sagt Danke an Käpt'n Blaubär für diesen Beitrag:
  • Stoffo
Antworten Top
#5
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.
Gruß

Stoffo
Antworten Top
#6
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
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • Stoffo
Antworten Top
#7
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:
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#8
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.


Angehängte Dateien
.xlsx   Mappe2.xlsx (Größe: 20,16 KB / Downloads: 3)
Gruß

Stoffo
Antworten Top
#9
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:
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#10
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.
Gruß

Stoffo
Antworten Top


Gehe zu:


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