Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


Druckbereich per VBA
#1
Hallo zusammen,

komme irgendwie nicht weiter mit einem Makro.

Und zwar:
Wenn Zelle F40 mehr als "", dann drucke den Druckbereich von B1:Z41
Wenn Zelle F40 und F80 mehr als "", dann drucke den Druckbereich von B1:Z81
Wenn Zelle F40, F80, F120 mehr als "", dann drucke den Druckbereich von B1:Z121
Wenn Zelle F40, F80, F120 und F160 mehr als "", dann drucke den Druckbereich von B1:Z1611

Ich hoffe, dass ich mich klar ausgedrückt habe und bedanke mich schon mal im Voraus!!!

Geändert: Hatte vergessen zu erwähnen, dass in allen F-Zellen Formeln hinterlegt sind!!!
Grüße aus Bremen
Bernie

"Wenn du jemanden triffst ohne lächeln, schenke ihm deins !!!"

MS Office 2010 Pro - Win 7 Home Premium
Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen ich keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.
to top
#2
Hallo Bernie,

ich würde es so versuchen
Code:
Option Explicit

Sub Druckbereich()

   ActiveSheet.PageSetup.PrintArea = ""
  
   If ActiveSheet.Range("F40").Value <> "" And _
      ActiveSheet.Range("F80").Value <> "" And _
      ActiveSheet.Range("F120").Value <> "" And _
      ActiveSheet.Range("F160").Value <> "" Then
      ActiveSheet.PageSetup.PrintArea = "$B$1:$Z$1611"
   ElseIf ActiveSheet.Range("F40").Value <> "" And _
      ActiveSheet.Range("F80").Value <> "" And _
      ActiveSheet.Range("F120").Value <> "" Then
      ActiveSheet.PageSetup.PrintArea = "$B$1:$Z$121"
   ElseIf ActiveSheet.Range("F40").Value <> "" And _
      ActiveSheet.Range("F80").Value <> "" Then
      ActiveSheet.PageSetup.PrintArea = "$B$1:$Z$81"
   ElseIf ActiveSheet.Range("F40").Value <> "" Then
      ActiveSheet.PageSetup.PrintArea = "$B$1:$Z$41"
   End If
    
End Sub
Gruß Peter
[-] Folgende(r) 1 Benutzer sagt Danke an pefeu für diesen Beitrag:
Bernie
to top
#3
Hallo Bernie,

müssen alle Zellen auf nicht leer geprüft werden oder reicht es, wenn z.B F160 nicht leer dann den Bereich "$B$1:$Z$1611" drucken?

Damit würde der Code etwas kürzer ausfallen.
Gruß Atilla

Excel 2007
to top
#4
Hallo Atilla,

schön mal wieder von Dir zu hören. War gerade am testen von Peters Vorschlag und hab noch Probleme mit dem Druckbereich.

Ja, du hast recht, wenn lediglich die einzelne F-Zelle, obwohl mit Formel hinterlegt, kein berechnenden Wert hat.

Es sollte auch der jeweilige Druckbereich Seite1= A2:Z41, Seite2=A2:Z81 usw. berücksichtigt werden. D.h. jeder Seite (4 gesamt) umfasst 40 Zeilen.
Grüße aus Bremen
Bernie

"Wenn du jemanden triffst ohne lächeln, schenke ihm deins !!!"

MS Office 2010 Pro - Win 7 Home Premium
Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen ich keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.
to top
#5
Hallo Peter,

Danke für deine schnelle Hilfe.

Hab dein Vorschlag auf Druckbereich angepasst und die ersten beiden Seiten sind optimal, die dritte Seite übernimmt von der vierten Seite die erste Zeile mit auf Seite drei.

Bin noch am tüfteln.
Grüße aus Bremen
Bernie

"Wenn du jemanden triffst ohne lächeln, schenke ihm deins !!!"

MS Office 2010 Pro - Win 7 Home Premium
Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen ich keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.
to top
#6
Hallo Bernie,

da Du im letzten Beitrag andere Bereiche nennst als im ersten, habe ich mal die Bereiche aus dem ersten Beitrag genommen. Das Prinzip solltest Du aber anhand des Codes erkennen und für Dich anpassen können.

Code:
Sub test()
   Dim i As Long, j As Long
   Dim arr1, arr2
  
   arr1 = Array("$F160", "F120", "F80", "F40")
   arr2 = Array("$B$1:$Z$1611", "B1:Z121", "B1:Z81", "B1:Z41")
   For i = LBound(arr1) To UBound(arr1)
      If Range(arr1(i)) <> "" Then
         ActiveSheet.PageSetup.PrintArea = arr2(i)
         Exit For
      End If
   Next i
  
   ActiveSheet.ResetAllPageBreaks
   For j = 41 To Range(arr2(i)).Rows.Count Step 41
      ActiveSheet.HPageBreaks.Add Cells(j, 1)
   Next j

End Sub
Gruß Atilla

Excel 2007
to top
#7
Hallo Atilla,

die letzten Zelldaten waren die Richtigen.
Allerdings wird die Skalierung bzw. die Seitenumbrüche entfernt, so dass ich keine richtige Druckseite habe, verschiebt sich alles.

Also Bereich der Druckseite ist von A2:Z41 + jeweils 40 Zeile je Druckseite, Skalierung hatte ich auf 93% und hatte auch einen Seitenumbruch eingefügt.

Folgenden Code habe ich an deinen gehängt...
Code:
sDruckerAktuell = Application.ActivePrinter
   'Application.ActivePrinter = "PDFCreator auf Ne00:"
   'ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
    ChDir "C:\Users\Bernd Kiehl\Downloads"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\Bernd Kiehl\Downloads\Dienstplan_Kiehl.pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
   Application.ActivePrinter = sDruckerAktuell
End Sub

Da dein Code die von mir per Menü eingestellten Formatierungen für den Druck übern Haufen wirft.

Könntest du mir das ändern?
Grüße aus Bremen
Bernie

"Wenn du jemanden triffst ohne lächeln, schenke ihm deins !!!"

MS Office 2010 Pro - Win 7 Home Premium
Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen ich keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.
to top
#8
Hallo Bernie,

dann lösch mal diesen Teil:

Code:
ActiveSheet.ResetAllPageBreaks
   For j = 41 To Range(arr2(i)).Rows.Count Step 41
      ActiveSheet.HPageBreaks.Add Cells(j, 1)
   Next j
Gruß Atilla

Excel 2007
to top
#9
Hallo Atilla,

ja, jetzt passte es! Danke dir recht♥lich Thumps_up
Grüße aus Bremen
Bernie

"Wenn du jemanden triffst ohne lächeln, schenke ihm deins !!!"

MS Office 2010 Pro - Win 7 Home Premium
Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen ich keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Problem mit dem druckbereich angeber0815 15 246 03.11.2016, 17:03
Letzter Beitrag: angeber0815
  Druckbereich VBA triphaze 3 108 28.10.2016, 19:07
Letzter Beitrag: schauan
  Druckbereich Robbie1985 3 106 14.09.2016, 14:43
Letzter Beitrag: schauan
  Druckbereich auf Autofilterergebnis definieren StefanGruber_LA 14 532 01.09.2016, 16:28
Letzter Beitrag: Kuwer
  VBA Druckbereich als PDF speichern ReneSaince 1 582 02.04.2016, 05:00
Letzter Beitrag: schauan
  per Makro alle Tabellenblätter mit gleichem Druckbereich drucken Mike4711 10 1.087 04.03.2016, 17:19
Letzter Beitrag: Mike4711
  VBA: Variabler Druckbereich Joe 3 454 22.10.2015, 12:10
Letzter Beitrag: Joe
  Druckbereich Reini 6 993 16.10.2015, 20:42
Letzter Beitrag: Reini
  Druckbereich per VBA knallebumm 15 1.815 05.10.2015, 17:50
Letzter Beitrag: Steffl
  Druckbereich über Button als PDF speichern Mike4711 2 3.253 18.03.2015, 19:43
Letzter Beitrag: Mike4711

Gehe zu:


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