Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1352to1356
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
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

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

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

318 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige