BeforePrint - Fehler

Bild

Betrifft: BeforePrint - Fehler von: Thomas
Geschrieben am: 01.03.2005 17:47:40

Hallo Zusammen

Ich bin noch einmal bei euch, betreff Laufzeitfehler bei BeforePrint.

Modul: Diese Arbeitsmappe


Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Static wirklichDrucken As Boolean   'Semaphore
    Dim wks1 As Worksheet, wks2 As Worksheet
    If Not wirklichDrucken Then
        Cancel = True
        wirklichDrucken = True
        'Zellenfarbe entfernen
        Set wks1 = Worksheets("Zusammenfassung")
        Set wks2 = Worksheets("Abrechnung")
        wks1.Range("F12:I15,B21,B22:D22,H21:H22,A42,B45:B46").Interior.ColorIndex = xlNone
        wks2.Range("C6:C9,C11,C13").Interior.ColorIndex = xlNone
        ThisWorkbook.PrintOut
'       Set wks1 = Worksheets("Zusammenfassung")
        Set wks2 = Worksheets("Abrechnung")
'       'Zellenfarbe setzen
        With wks1.Range("F12:I12,F12:I15,B21,B22:D22,H21:H22,A42,B45:B46").Interior
            .ColorIndex = 36
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
        End With
        With wks2.Range("C6:C9,C11,C13").Interior
            .ColorIndex = 36
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
        End With
        
        Else
            wirklichDrucken = False
        End If
End Sub


Folgendes:
Wenn ich auf das Drucker-Symbol klicke funktionierts! Wenn ich auf das Seitenansicht-Symbol klicke, gibts Laufzeitfehler bei
wks1.Range("F12:I15,B21,B22:D22,H21:H22,A42,B45:B46").Interior.ColorIndex = xlNone

Habe herausgefunden, dass wenn ich den Range-Bereich einzel von Zellenformat lösche gehts!
wks1.Range("B22:D22").Interior.ColorIndex = xlNone
wks1.Range("H21:H22").Interior.ColorIndex = xlNone
wks1.Range("A42").Interior.ColorIndex = xlNone
wks1.Range("B45:B46").Interior.ColorIndex = xlNone
wks2.Range("C6:C9").Interior.ColorIndex = xlNone
wks2.Range("C11").Interior.ColorIndex = xlNone
wks2.Range("C13").Interior.ColorIndex = xlNone

Wieso? Weiss nicht mehr weiter und verliere das Vertrauen in VBA :-(

Gruss Thomas
Bild


Betrifft: AW: BeforePrint - Fehler von: Luc:-?
Geschrieben am: 01.03.2005 19:46:39

Hallo Thomas,
das Vertrauen in MS kann man leicht verlieren, VBA ist ein bitchen besser! Ich denke, dass du bei allen anderen Ranges, die eine Mehrfachauswahl repräsentieren, ebenfalls diese Fehlermeldung bekommen müsstest. Mich wundert nicht, dass das WirklichDrucken funktioniert, denn da wdn diese Befehle ja nicht abgearbeitet. Du musst diese nicht zusammenhängenden Bereiche erst mit der Union-Methode zusammenfassen. Dann sollte es klappen.
Gruß Luc


Bild


Betrifft: AW: BeforePrint - Fehler von: Thomas
Geschrieben am: 01.03.2005 20:16:13

Hi Luc

Ja, der Fehler kommt bei allen Mehrfachranges! Komisch aber nur bei Seitenansicht, nicht bei Drucken.

Habs mit Union versucht:
Set wks1 = Worksheets("Zusammenfassung")
Set wks2 = Worksheets("Abrechnung")
Set r1 = wks1.Range("B22:D22")
Set r2 = wks1.Range("H21:H22")
Set r3 = wks1.Range("A42")
Set r4 = wks1.Range("B45:B46")
Set r5 = wks2.Range("C6:C9")
Set r6 = wks2.Range("C11")
Set r7 = wks2.Range("C13")
Set Quellbereich = Union(r1, r2, r3, r4, r5, r6, r7)
Quellbereich.Interior.ColorIndex = xlNone

Gibt aber den gleichen Laufzeitfehler zurück.

Sche.... Lass ich das eben sein, wäre aber ein schöner Lerneffekt gewesen mit BeforPrint.

Gruss Thomas


Bild


Betrifft: wundert mich, teste mal, melde m.morgen - owT von: Luc :-?
Geschrieben am: 01.03.2005 20:31:50




Bild


Betrifft: AW: BeforePrint - Fehler - alles klar! von: Luc :-?
Geschrieben am: 02.03.2005 12:01:53

Hallo Thomas,
so, wie versprochen...
Der Fehler besteht darin, das Union nicht Bereiche verschiedener Blätter zusammenfassen kann. Du müsstest also auf jeden Fall für jedes Blatt einen Befehl schreiben. Da ich die Anlage so vieler Variablen für unnötig halte, hab ich dir hier mal beigelegt wie ich das machen würde. Dann macht auch with Sinn. Wenn du deine Variable Quellbereich als Datenfeld anlegst, könntest du das Farblöschen für viele Blätter rationeller gestalten (mittels Schleife). Übrigens gibt .ColorIndex 2 andere xlKonstanten als xlNone vor. Die haben aber den gleichen Wert - also geschenkt.

Sub ZellEntfärb()
    Dim Quellbereich(1) As Range
    With ActiveWorkbook.Sheets("Zusammenfassung")
        Set Quellbereich(0) = Union(.Range("B22:D22"), _
            .Range("H21:H22"), .Range("A42"), .Range("B45:B46"))
    End With
    With ActiveWorkbook.Sheets("Abrechnung")
        Set Quellbereich(1) = Union(.Range("C6:C9"), _
            .Range("C11"), .Range("C13"))
    End With
    Quellbereich(0).Interior.ColorIndex = xlNone
    Quellbereich(1).Interior.ColorIndex = xlNone
End Sub

Aber wie gesagt, im Prinzip brauchst du nur 2 Quellbereiche.
Ciao Luc


Bild


Betrifft: AW: BeforePrint - Fehler - alles klar! von: Thomas
Geschrieben am: 02.03.2005 19:22:42

Hallo Luc

Konnte deinen Code erst jetzt testen.
Vorweg: Vielen Dank für deine Hilfe!!!

Leider bringt auch dieser Code auf meinem Kasten den Laufzeitfehler: "Die Color-Index Eigenschaft des Interior-Objektes kann nicht festgelegt werden." bei: Quellbereich(1).Interior.ColorIndex = xlNone

Habe es jetzt so gelöst, dass jeder Bereich einzel entfärbt wird. Aufwändig, aber wenigstens funktionierts.

Danke nochmals.

Gruss Thomas


Bild


Betrifft: AW: BeforePrint - Fehler - seltsam?! von: Luc
Geschrieben am: 03.03.2005 08:57:52

Hallo Thomas,
da muss dann MS was verschlimmbessert haben - unter MSO2k funkts ausgezeichnet. Warum meldet er den Fehler erst bei Qbereich(1) und nicht schon bei Qbereich(0)? Oder hast du die Indizes verändert? Ist der Qbereich richtig dimensioniert? Beginnen die Indizes mit 0 oder erst mit 1 (konnte bisher eingestellt wdn, Standard war 0)?
Gruß Luc


Bild


Betrifft: AW: BeforePrint - Fehler - seltsam?! von: Thomas
Geschrieben am: 03.03.2005 10:01:43

Hi Luc

Habe zuerst alles so gemacht, wie du vorgeschlagen hast. Dann habe ich auch versucht, den Quellbereich anders zu dimensionieren. Hat leider alles nicht den gewünschten Erfolg gebracht.

Habe mich auch gewundert, warum erst bei Quellbereich(1) und nicht schon bei (0).

Naja, der Fachmann wundert sich, der Laie staunt !

Bill Gates ist ja jetzt zum Ritter geschlagen worden, vielleicht kann er jetzt mein Problem lösen :-)

Gruss Thomas


Bild


Betrifft: @Thomas: OK - u take it easy! - owT von: Luc ;-?
Geschrieben am: 03.03.2005 12:30:54




 Bild

Beiträge aus den Excel-Beispielen zum Thema "BeforePrint - Fehler"