Hallo Leute
In einem Excel-"Formular" (Excel 2010 unter Windows 7 - 64 bit) sind einige Zellen "Yellow" eingefärbt, worin der User schlussendlich etwas (Text oder Zahlen etc.) hineinschreiben kann. Andere Zellen wiederum sind "Golden" eingefärbt, welche der User mit einem Doppelklick schwarz färben kann. Soweit so gut.
Mittels Makro werden vor dem Ausdruck die Farben Yellow und Golden entfernt, diese sollen ja nur dem User anzeigen, in welche Felder er etwas einfüllen kann, sie haben auf dem Papier nichts verloren. Sobald das Formular ausgedruckt ist, sollten die "Yellow"- und "Golden"-Felder wieder entsprechend zurückgefärbt werden.
Das Makro sieht wie folgt aus (abgelegt unter "Diese Arbeitsmappe"):
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim lngColorIndexY As Long
Dim lngColorIndexG As Long
Dim lngPCI(1 To 2) As Long
Dim lngPat(1 To 2) As Long
ActiveSheet.Protect Password:="Roger", DrawingObjects:=True, Contents:=True, Scenarios:=True, UserInterfaceOnly:=True
If Not Application.Dialogs(xlDialogPrinterSetup).Show Then Exit Sub
Application.EnableEvents = False
Cancel = True
With Me.Styles("Yellow").Interior
lngColorIndexY = .ColorIndex
lngPCI(1) = .PatternColorIndex
lngPat(1) = .Pattern
.Pattern = xlNone
End With
With Me.Styles("Golden").Interior
lngColorIndexG = .ColorIndex
lngPCI(2) = .PatternColorIndex
lngPat(2) = .Pattern
.Pattern = xlNone
End With
ActiveWindow.SelectedSheets.PrintOut
With Me.Styles("Yellow").Interior
.ColorIndex = lngColorIndexY
.PatternColorIndex = lngPCI(1)
.Pattern = lngPat(1)
End With
With Me.Styles("Golden").Interior
.ColorIndex = lngColorIndexG
.PatternColorIndex = lngPCI(2)
.Pattern = lngPat(2)
End With
Application.EnableEvents = True
End Sub
Das Makro ergibt einen "Laufzeitfehler '1004': Anwendungs- oder objektdefinierter Fehler" beim ersten ".Pattern = xlNone".
Ich stehe völlig auf dem Schlauch... Kann mir jemand sagen, wie ich diesen Fehler beheben kann?
Und kann mir jemand ein gutes Buch empfehlen, welches VBA behandelt und womit man es lernen kann?
Vielen herzlichen Dank im Voraus!
Ruppi
In einem Excel-"Formular" (Excel 2010 unter Windows 7 - 64 bit) sind einige Zellen "Yellow" eingefärbt, worin der User schlussendlich etwas (Text oder Zahlen etc.) hineinschreiben kann. Andere Zellen wiederum sind "Golden" eingefärbt, welche der User mit einem Doppelklick schwarz färben kann. Soweit so gut.
Mittels Makro werden vor dem Ausdruck die Farben Yellow und Golden entfernt, diese sollen ja nur dem User anzeigen, in welche Felder er etwas einfüllen kann, sie haben auf dem Papier nichts verloren. Sobald das Formular ausgedruckt ist, sollten die "Yellow"- und "Golden"-Felder wieder entsprechend zurückgefärbt werden.
Das Makro sieht wie folgt aus (abgelegt unter "Diese Arbeitsmappe"):
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim lngColorIndexY As Long
Dim lngColorIndexG As Long
Dim lngPCI(1 To 2) As Long
Dim lngPat(1 To 2) As Long
ActiveSheet.Protect Password:="Roger", DrawingObjects:=True, Contents:=True, Scenarios:=True, UserInterfaceOnly:=True
If Not Application.Dialogs(xlDialogPrinterSetup).Show Then Exit Sub
Application.EnableEvents = False
Cancel = True
With Me.Styles("Yellow").Interior
lngColorIndexY = .ColorIndex
lngPCI(1) = .PatternColorIndex
lngPat(1) = .Pattern
.Pattern = xlNone
End With
With Me.Styles("Golden").Interior
lngColorIndexG = .ColorIndex
lngPCI(2) = .PatternColorIndex
lngPat(2) = .Pattern
.Pattern = xlNone
End With
ActiveWindow.SelectedSheets.PrintOut
With Me.Styles("Yellow").Interior
.ColorIndex = lngColorIndexY
.PatternColorIndex = lngPCI(1)
.Pattern = lngPat(1)
End With
With Me.Styles("Golden").Interior
.ColorIndex = lngColorIndexG
.PatternColorIndex = lngPCI(2)
.Pattern = lngPat(2)
End With
Application.EnableEvents = True
End Sub
Das Makro ergibt einen "Laufzeitfehler '1004': Anwendungs- oder objektdefinierter Fehler" beim ersten ".Pattern = xlNone".
Ich stehe völlig auf dem Schlauch... Kann mir jemand sagen, wie ich diesen Fehler beheben kann?
Und kann mir jemand ein gutes Buch empfehlen, welches VBA behandelt und womit man es lernen kann?
Vielen herzlichen Dank im Voraus!
Ruppi