AW: Druckmaske unterschiedlich lang
19.04.2010 08:49:23
fcs
Hallo Werner,
du muss in deinem Fall das Anpassen des Druckbereich in die Aktion integrieren, die bei Änderung der Auswahl für die Personenzahl in der Kombobox im Blatt "Eingabe" ausgeführt wird.
Schaut dann etwa wie folgt aus.
Im Blatt Druckausgabe brauchst du kein WENN-Formeln einzusetzen.
Gruß
Franz
Option Explicit
Sub Einblenden()
'Alle Spalten und Shapes einblenden
Dim wks As Worksheet, oShape As Shape
Set wks = Worksheets("Eingabe")
wks.Columns.Hidden = False
For Each oShape In wks.Shapes
oShape.Visible = True
Next
End Sub
Sub Ausblenden()
'Ausblenden gemäß Auswahl in Combobox
Call Einblenden
Select Case Worksheets("Daten").Range("A8").Value
Case 1
Call Aus_Shapes(Worksheets("Eingabe"), Array("Drop Down 3", "Check Box 10", _
"Check Box 11", "Check Box 12", "Check Box 13"))
Call Aus_Shapes(Worksheets("Eingabe"), Array("Drop Down 4", "Check Box 14", _
"Check Box 15", "Check Box 16", "Check Box 17"))
Call Aus_Shapes(Worksheets("Eingabe"), Array("Drop Down 5", "Check Box 18", _
"Check Box 19", "Check Box 20", "Check Box 21"))
With Worksheets("Eingabe")
.Range(.Columns(9), .Columns(17)).EntireColumn.Hidden = True
End With
Case 2
Call Aus_Shapes(Worksheets("Eingabe"), Array("Drop Down 4", "Check Box 14", _
"Check Box 15", "Check Box 16", "Check Box 17"))
Call Aus_Shapes(Worksheets("Eingabe"), Array("Drop Down 5", "Check Box 18", _
"Check Box 19", "Check Box 20", "Check Box 21"))
With Worksheets("Eingabe")
.Range(.Columns(12), .Columns(17)).EntireColumn.Hidden = True
End With
Case 3
Call Aus_Shapes(Worksheets("Eingabe"), Array("Drop Down 5", "Check Box 18", _
"Check Box 19", "Check Box 20", "Check Box 21"))
With Worksheets("Eingabe")
.Range(.Columns(15), .Columns(17)).EntireColumn.Hidden = True
End With
Case 4
'do nothing
End Select
Call Druckbereich(lAnzahl:=Worksheets("Daten").Range("A8"))
End Sub
Sub Aus_Shapes(wks As Worksheet, arrNames)
'Ausblenden der genannten Shapes im Blatt
Dim iI As Long
For iI = LBound(arrNames) To UBound(arrNames)
wks.Shapes(arrNames(iI)).Visible = False
Next
End Sub
Private Sub Druckbereiche(lAnzahl)
Dim wks As Worksheet
'Festlegen des Druckbereiches abhängig von lAnzahl
Set wks = Worksheets("Ausdruck") 'Tabellenblatt mit Angebotstexten
With wks
Select Case Anzahl '=Anzahl Kunden
'Die Druckbereiche im Tabellenblatt für die Fälle sind mit Namen festgelegt.
Case 1
.PageSetup.PrintArea = "$a$1:$h$56"
Case 2
.PageSetup.PrintArea = "$a$57:$h$112"
Case 3
.PageSetup.PrintArea = "$a$113:$h$168"
Case Else
MsgBox "Unzulässige Anzahl" & vbLf & "Der Druckbeich im Blatt """ & .Name _
& """ wird aufgehoben.", vbInformation + vbOKOnly, _
"Druckbereich Angebot einrichten"
.PageSetup.PrintArea = ""
End Select
End With
End Sub