Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: mehrere Druckbereiche auf einem Tabellenblatt

mehrere Druckbereiche auf einem Tabellenblatt
26.03.2014 09:19:15
amn
Hallo,
ich habe in den vergangenen Tagen die Ausgabe von Diagramme in einer Excel-Mappe reorganisiert. Statt vieler Sheets mit jeweils bis zu 10 statischen Diagramme gibt jetzt nur noch ein Sheet mit 8 Dynamischen, die der User via Dropdown und Checkboxen nach belieben zusammenstellen kann.
Nun stellt sich zum Schulß noch das Problem der Druckbereiche.
Selbstverständlich kann man über Druckbereich hinzu fügen alle 8 setzen und ich bekomme beim PDF-Print (eigenes Makro) je Diagramm eine Seite.
Auch das versuche ich gerade via Checkboxen (je eine neben dem Diagramm) etwas zu flexibilisieren um dem User die Möglichkeit zu geben genau die zu wählen die erbraucht.
Wenn's auch nicht schön aussieht und wahrscheinlich viel einfacher geht bekommen ich die Abfrage der Checkboxen schon mal hin. Was mir jetzt noch feht ist das korrekte zusammenbauen. Hab's mal mit ner Schleife versuchtund mit Stringverkettung, aber das hat alles bisher nit zum gewünschten Ergebnis geführt.

Sub PrintAreaOn()
Dim PrintA1 As String
Dim PrintA2 As String
Dim PrintA3 As String
Dim PrintA4 As String
Dim PrintA5 As String
Dim PrintA6 As String
Dim PrintA7 As String
Dim PrintA8 As String
If ActiveSheet.Shapes("Print1").ControlFormat.Value = xlOn Then
PrintA1 = "b5:k28"
ElseIf ActiveSheet.Shapes("Print1").ControlFormat.Value = xlOff Then
PrintA1 = ""
End If
If ActiveSheet.Shapes("Print2").ControlFormat.Value = xlOn Then
PrintA2 = "n5:w28"
ElseIf ActiveSheet.Shapes("Print2").ControlFormat.Value = xlOff Then
PrintA2 = ""
End If
If ActiveSheet.Shapes("Print3").ControlFormat.Value = xlOn Then
PrintA3 = "b31:k54"
ElseIf ActiveSheet.Shapes("Print3").ControlFormat.Value = xlOff Then
PrintA3 = ""
End If
If ActiveSheet.Shapes("Print4").ControlFormat.Value = xlOn Then
PrintA4 = "n31:w54"
ElseIf ActiveSheet.Shapes("Print4").ControlFormat.Value = xlOff Then
PrintA4 = ""
End If
If ActiveSheet.Shapes("Print5").ControlFormat.Value = xlOn Then
PrintA5 = "b57:k80"
ElseIf ActiveSheet.Shapes("Print5").ControlFormat.Value = xlOff Then
PrintA5 = ""
End If
If ActiveSheet.Shapes("Print6").ControlFormat.Value = xlOn Then
PrintA6 = "n57:w80"
ElseIf ActiveSheet.Shapes("Print6").ControlFormat.Value = xlOff Then
PrintA6 = ""
End If
If ActiveSheet.Shapes("Print7").ControlFormat.Value = xlOn Then
PrintA7 = "b83:k106"
ElseIf ActiveSheet.Shapes("Print7").ControlFormat.Value = xlOff Then
PrintA7 = ""
End If
If ActiveSheet.Shapes("Print8").ControlFormat.Value = xlOn Then
PrintA8 = "n83:w106"
ElseIf ActiveSheet.Shapes("Print8").ControlFormat.Value = xlOff Then
PrintA8 = ""
End If
'For i = 1 To 8
'If PrintA & i  "" Then
'MsgBox "PrintA" & i & ": " & PrintA & i
'End If
'Next
'ActiveSheet.PageSetup.PrintArea = PrintA1,...
End Sub

LG
amn

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mehrere Druckbereiche auf einem Tabellenblatt
26.03.2014 11:18:24
Rudi
Hallo,
If PrintA & i "" Then
Variablennamen kann man so nicht zusammenbasteln.
Sub PrintAreaOn()
Dim strPrintArea As String
Dim i As Integer
Dim arrAreas
arrAreas = Array("b5.k28", "n5:w28", "b31:k54", "n31:w54", "b57:k80", "n57:w80", "b83:k106", " _
n83:w106")
For i = 1 To 8
If ActiveSheet.Shapes("Print" & i).ControlFormat.Value = xlOn Then
If strPrintArea = "" Then
strPrintArea = arrAreas(i - 1)
Else
strPrintArea = strPrintArea & ";" & arrAreas(i - 1)
End If
End If
Next i
MsgBox strPrintArea
End Sub

Gruß
Rudi

Anzeige
Korrektur
26.03.2014 11:44:21
Rudi
Hallo,
, statt ;
Sub PrintAreaOn()
Dim strPrintArea As String
Dim i As Integer
Dim arrAreas
arrAreas = Array("b5:k28", "n5:w28", "b31:k54", "n31:w54", "b57:k80", "n57:w80", "b83:k106", " _
n83:w106")
For i = 1 To 8
If ActiveSheet.Shapes("Print" & i).ControlFormat.Value = xlOn Then
If strPrintArea = "" Then
strPrintArea = arrAreas(i - 1)
Else
strPrintArea = strPrintArea & "," & arrAreas(i - 1)
End If
End If
Next i
'MsgBox strPrintArea
ActiveSheet.PageSetup.PrintArea = strPrintArea
End Sub

Anzeige
AW: Korrektur
26.03.2014 16:03:44
amn
Hallo Rudi,
vielen Dank für die Mühe.
Nach dem ich halbwegs verstanden habe wie das funktioniert (der Gedanke Array kam mir zwischenzeitlich auch mal) konnte ich dein Vorschlag gleich noch dahin gehend erweitern, daß die Hintergrundfarbe der Zellen hinter der jeweiligen Checkbox von Grün auf Rot wechselt wenn die Checkbox ausgewählt wurde.
Grüße
amn
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige