Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1072to1076
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

Makro mit FormatConditions - Excel-Bug?

Makro mit FormatConditions - Excel-Bug?
05.05.2009 17:55:00
Martin
Hallo liebe Excelianer,
nach drei Stunden Herumprobieren bin ich der Verzweifelung nahe.
Situation:
Ich habe ein Makro geschrieben, welches eine "Bedingte Formatierung" auf einen Zellenbereich anwendet, eine Seitenvorschau erzeugt und anschließend die Bedingte Formatierung wieder löscht.
Das Problem:
Wenn ich die Seitenvorschau verlasse, kann ich das Makro weiterhin anwenden. Aber wenn ich aus der Seitenvorschau heraus die Seite drucke, geht das Makro kein zweites Mal. Wenn das Makro (nachdem aus der Seitenvorschau heraus gedruckt wurde) erneut aufgerufen wird, wird die Bedingte Formatierung nicht mehr angewendet. Erst wenn Excel komplett neu gestartet wird, geht das Makro wieder (...bis zum ersten Druck aus der Seitenvorschau heraus).
Ist das ein Excel-Bug oder mache ich einen Fehler?
Wäre für Lösungsvorschläge sehr dankbar.
Hier das Makro:

Sub Ausdruck()
Dim Daten As Range
Set Daten = ActiveSheet.Range("B7:F23") 'Zellenbereich für Bedingte Formatierung festlegen
'Bedingte Formatierung festlegen
Daten.FormatConditions.Add Type:=xlExpression, Formula1:="=ZEILE()=UNGERADE(ZEILE())"
Daten.FormatConditions(1).Interior.ColorIndex = 50
ActiveSheet.PrintPreview 'Druckvorschau
Daten.FormatConditions.Delete 'Bedingte Formatierung löschen
End Sub


4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Keine Lösung, aber ein Versuch!
05.05.2009 19:21:57
Backowe
Hi,
probiere es mal ohne FormatConditions, vielleicht hilft es ja.
VBA-Code:
Sub Ausdruck()
  Dim i%
  For i = 7 To 23 Step 2
    Range(Cells(i, "B"), Cells(i, "F")).Interior.ColorIndex = 50
  Next
  ActiveSheet.PrintPreview
  For i = 7 To 23 Step 2
    Range(Cells(i, "B"), Cells(i, "F")).Interior.ColorIndex = xlNone
  Next
End Sub
Gruß Jürgen
AW: Keine Lösung, aber ein Versuch!
Martin

Hallo Jürgen,
vielen Dank, das wäre im Normalfall eine Alternative. Aber ich habe den Code wesentlich vereinfacht hier hereingestellt, um das Problem "auf den Punkt" zu bringen. Ich benötige aber wirklich eine Lösung mit der Bedingten Formatierung.
Aber vielen Dank für Deine Bemühungen!
MfG
Martin
Würde das Makro aus der Ereignisproz...
Luc:-?

...der ArbMappe ..._BeforePrint aufrufen, Martin.
Weiß allerdings nicht, ob es dann nicht auch die gleichen Probleme gibt. Dann evtl Cancel = True setzen. Einfach noch mal den ganzen Ablauf durchdenken und schrittweise testen, ob das Pgm nicht vorzeitig verlassen bzw gar nicht aufgerufen wird und ob es beim Druck aus Vorschau auch wirklich (ganz) abgearbeitet wird (war jetzt wohl doppelt gemoppelt... ;-) )...
Gruß Luc :-?
vielleicht mit Application.OnTime
Tino

Hallo,
versuche es mal so, in Verbindung mit Application.OnTime
Application.OnTime steht zwar auf eine Sekunde, aber beim Drucken
(dazu gehört auch die Druckvorschau) wird dies nicht ausgeführt,
sondern erst nach dem Drucken.
Kann man gleich setzen mit einem Event nach dem Druck.
kommt als Code in DieseArbeitsmappe
Option Explicit 
 
Private Sub Workbook_BeforePrint(Cancel As Boolean) 
'Zellenbereich für Bedingte Formatierung festlegen 
Set Daten = ActiveSheet.Range("B7:F23") 
    
'Bedingte Formatierung festlegen 
Daten.FormatConditions.Add Type:=xlExpression, Formula1:="=ZEILE()=UNGERADE(ZEILE())" 
Daten.FormatConditions(1).Interior.ColorIndex = 50 
        
Application.OnTime Now + TimeSerial(0, 0, 1), "Zuruecksetzen" 
 
End Sub 
 
 

Modul Modul1

Option Explicit 
Public Daten As Range 
Sub Zuruecksetzen() 
If Not Daten Is Nothing Then 
 Daten.FormatConditions.Delete 'Bedingte Formatierung löschen 
 Set Daten = Nothing 
End If 
End Sub 


Gruß Tino

Anzeige
AW: Keine Lösung, aber ein Versuch!
05.05.2009 20:12:35
Martin
Hallo Jürgen,
vielen Dank, das wäre im Normalfall eine Alternative. Aber ich habe den Code wesentlich vereinfacht hier hereingestellt, um das Problem "auf den Punkt" zu bringen. Ich benötige aber wirklich eine Lösung mit der Bedingten Formatierung.
Aber vielen Dank für Deine Bemühungen!
MfG
Martin
Würde das Makro aus der Ereignisproz...
06.05.2009 04:38:43
Luc:-?
...der ArbMappe ..._BeforePrint aufrufen, Martin.
Weiß allerdings nicht, ob es dann nicht auch die gleichen Probleme gibt. Dann evtl Cancel = True setzen. Einfach noch mal den ganzen Ablauf durchdenken und schrittweise testen, ob das Pgm nicht vorzeitig verlassen bzw gar nicht aufgerufen wird und ob es beim Druck aus Vorschau auch wirklich (ganz) abgearbeitet wird (war jetzt wohl doppelt gemoppelt... ;-) )...
Gruß Luc :-?
Anzeige
vielleicht mit Application.OnTime
06.05.2009 08:30:16
Tino
Hallo,
versuche es mal so, in Verbindung mit Application.OnTime
Application.OnTime steht zwar auf eine Sekunde, aber beim Drucken
(dazu gehört auch die Druckvorschau) wird dies nicht ausgeführt,
sondern erst nach dem Drucken.
Kann man gleich setzen mit einem Event nach dem Druck.
kommt als Code in DieseArbeitsmappe
Option Explicit 
 
Private Sub Workbook_BeforePrint(Cancel As Boolean) 
'Zellenbereich für Bedingte Formatierung festlegen 
Set Daten = ActiveSheet.Range("B7:F23") 
    
'Bedingte Formatierung festlegen 
Daten.FormatConditions.Add Type:=xlExpression, Formula1:="=ZEILE()=UNGERADE(ZEILE())" 
Daten.FormatConditions(1).Interior.ColorIndex = 50 
        
Application.OnTime Now + TimeSerial(0, 0, 1), "Zuruecksetzen" 
 
End Sub 
 
 

Modul Modul1

Option Explicit 
Public Daten As Range 
Sub Zuruecksetzen() 
If Not Daten Is Nothing Then 
 Daten.FormatConditions.Delete 'Bedingte Formatierung löschen 
 Set Daten = Nothing 
End If 
End Sub 


Gruß Tino

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige