Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1188to1192
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
Inhaltsverzeichnis

Zell-Einfärbung mit BeforePrint aufheben

Zell-Einfärbung mit BeforePrint aufheben
Luftibus
Hallo liebe Excel-HelferInnen
in Tabelle2 der Mappe xy.xls sind verschiedene Zellen eingefärbt.
Wie lautet die BeforePrint-Anweisung, damit beim Ausdruck der Tabelle ein bestimmter Bereich (Bsp. Range("B5:C5, F12, F14, F18, F20") ohne diese Einfärbung gedruckt wird?
Ich möchte das Problem ohne Modul lösen, kenne mich jedoch dabei überhaupt nicht aus...
Herzlichen Dank für Eure Unterstützung!
Liebe Grüsse Luftibus

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
was heisste "...ohne Modul"? (owT)
01.12.2010 13:56:49
Renee

AW: was heisste "...ohne Modul"? (owT)
01.12.2010 14:16:27
Luftibus
Hallo Renee
ich möchte das Problem nicht mit einem Makro lösen, das ich einer Befehlsschaltfläche zuordne oder sonst aufrufe. Ich stelle mir vor, dass mit einem Klick auf das Druckersymbol die "BeforePrint-Anweisung" ausgeführt wird. Ist dies so möglich? Die Zellen sollten nach dem Ausdruck wieder eingefärbt sein.
Vielen Dank für dein Support!
irgendwie läuft das dann unter...
01.12.2010 14:48:46
Renee
"Vorspiegelung falscher Tatsachen"
oder Luftibus ;-)
Code in DieseArbeitsmappe:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Const ExcludeRange = "B5:C5,F12,F14,F18,F20"
Dim ws As Worksheet
Dim lngActWs As Long
lngActWs = ActiveSheet.Index
Application.ScreenUpdating = False
Application.EnableEvents = False
For Each ws In ActiveWindow.SelectedSheets
With ActiveWorkbook
ws.Copy after:=.Worksheets(.Worksheets.Count)
ActiveSheet.Range(ExcludeRange).Interior.ColorIndex = xlColorIndexNone
Application.DisplayAlerts = False
ActiveSheet.PrintOut
ActiveSheet.Delete
Application.DisplayAlerts = True
End With
Next ws
Cancel = True
Application.EnableEvents = True
Application.ScreenUpdating = True
ActiveWorkbook.Sheets(lngActWs).Select
End Sub

GreetZ Renée
Anzeige
Hut ab + 1000 Dank !!!
01.12.2010 15:15:20
Luftibus
keine Sorge, die "Vorspiegelung falscher Tatsachen" hat schon seine Berechtigung.
Ihr seid geniale Helfer hier - Chapeau!
Gruss Luftibus
AW: was heisste "...ohne Modul"? (owT)
01.12.2010 14:42:41
Klaus
Hallo Liutibus (fiese Eltern?),
bemühe doch mal den Makrorekorder und entferne die Einfärbungen per Hand. Kommt ungefähr das bei raus:
Sub Makro1()
Range("B5:C5,F12,F14,F18,F20").Select
Range("F20").Activate
Selection.Interior.ColorIndex = xlNone
Range("G6").Select
End Sub
Das ganze gehört aber nicht ins Modul, sondern unter "diese Arbeitsmappe - Workbook before print".
dann sieht es (bereits optimiert) warscheinlich so aus:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
ActiveSheet.Range("B5:C5,F12,F14,F18,F20").Interior.ColorIndex = xlNone
End Sub
Färbe die Zellen nun wieder per Hand ein und lass auch dabei den Makrorekorder laufen, den "wieder einfärben Code" kannst du dann auf einen Button legen. Nicht vergessen die überflüssigen "select" und "activate" rauszuwerfen, im Zweifel helfen wir dabei gerne.
Grüße,
Klaus M.vdT.
Anzeige
AW: was heisste "...ohne Modul"? (owT)
01.12.2010 15:25:09
Luftibus
Lieber Klaus
danke für deinen Lösungsvorschlag!
Das mit dem Makrorekorder hatte ich schon (mit Ausnahme des Workbook_BeforePrint-Teil's).
Renees Lösung deckt das Gewünschte bestens ab.
Gruss Luftibus
AW: was heisste "...ohne Modul"? (owT)
01.12.2010 15:35:41
Klaus
Hi Hi,
Renee's Code ist schlank und elegant - wie immer. Trotzdem danke für die Rückmeldung auf meinen bescheidenen Lösungsvorschlag.
Grüße,
Klaus M.vdT.
ohne Modul
01.12.2010 14:50:41
Rudi
Hallo,
das Problem einer Before_Print-Prozedur besteht darin, dass XL hierbei nicht zwischen Drucken und Seitenansicht unterscheidet. Du müsstest also die Standardaktionen dieser Controls auf eigene Routinen umleiten.
Gruß
Rudi
Anzeige
AW: ohne Modul
01.12.2010 15:19:19
Luftibus
Lieber Rudi
Renee's Lösung gefällt mir sehr gut.
Dennoch versuche ich deinen Input zu verstehen. Danke Rudi!
Luftiger Klartext...
01.12.2010 17:23:40
Luc:-?
Hi, Lufti,
…_BeforePrint ist eine Ereignisprozedur, d.h., wird sie angelegt, kann damit das in ihrem Namen genannte Ereignis abgefangen und zusätzl Operationen ausgelöst wdn. Derartige Subroutinen stehen quasi auf der „virtuellen Rückseite“ der Objekte (hier Blätter bzw das ebenfalls virtuelle „Mappenblatt“). Das sind auch Module, nämlich sog Dokument-Klassenmodule (merke! Ohne Modul geht nichts in VBA!).
Was Rudi meint ist, wenn du nur die Druckvorschau aufrufst (nicht Drucken) wird diese Aktion ebenfalls ausgelöst, was ja irgendwie logisch ist. Falls das aber nicht erwünscht sein sollte, weil die Farblöschung dauerhaft wäre (habe ich jetzt nicht überprüft), muss das abgefangen wdn. Außerdem ist das, was Rudi vorschlägt, immer gut, wenn es sich bei den auszulösenden Aktionen um etwas handelt, was mehr als 3 Zeilen Code beansprucht u/o nichts mit den Standard-Parametern der Prozedur wie hier bspw Cancel zu tun hat. Auch, wenn ich mich selbst nicht immer daran halte, sei dir gesagt, dass du dir so ggf viel Arbeit ersparen kannst, wenn du eine solche Prozedur quasi nur als Verteiler benutzt. Spezielle (Unter-)Pgmm können in der Proz bedingungsabhängig mit Call prozname(parameter…) oder nur prozname parameter… aufgerufen wdn. Parameter können, aber müssen nicht angegeben wdn (hängt von der aufzurufenden Proz ab).
Gruß Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige