Microsoft Excel

Herbers Excel/VBA-Archiv

bedingte formatierung

Betrifft: bedingte formatierung
von: Matthes
Geschrieben am: 15.04.2003 - 13:45:04

ich hätte mal ne frage ich hab jetzt hier folgendes makro gefunden:

Sub nachtraeglich()
' erstellt von Hajo.Ziplies@web.de 14.12.02
' SCHRIFT
' für Hintergrund RaZelle.Interior.ColorIndex
Dim RaBereich As Range, RaZelle As Range
' Bereich der Wirksamkeit
Set RaBereich = Range("B3:C20,D1:D7")
' ActiveSheet.Unprotect
For Each RaZelle In Selection
' überprüfen ob Zelle im vorgegebenen Bereich
If Not Intersect(RaZelle, RaBereich) Is Nothing Then
' Kreuz entfernen
RaZelle.Borders(xlDiagonalDown).LineStyle = xlNone
RaZelle.Borders(xlDiagonalUp).LineStyle = xlNone
Select Case RaZelle.Value
Case "1"
' mal eine andere Variante mit Kreuz und Farbe
RaZelle.Borders(xlDiagonalDown).LineStyle = xlContinuous
RaZelle.Borders(xlDiagonalDown).Weight = xlThick
RaZelle.Borders(xlDiagonalUp).LineStyle = xlContinuous
RaZelle.Borders(xlDiagonalUp).Weight = xlThick
RaZelle.Font.ColorIndex = 26
Case "2"
RaZelle.Font.ColorIndex = 24
Case "3"
RaZelle.Font.ColorIndex = 3
' usw.
Case Else
RaZelle.Font.ColorIndex = 0
End Select
End If
Next RaZelle
' ActiveSheet.Protect
Set RaBereich = Nothing
End Sub

aber in meinen zellen steht z.B. mal "test2" mal "test198" oder "test176" wenn ich nun z.B. Case "test" RaZelle.Font.ColorIndex = 3 schreibe färben sich die zellen nicht weil ja nicht nur das wort "test" drinsteht sondern auch noch zahlen ich möchte aber alle zellen wo das wort vorkommt einfärben, geht das ?

  

Re: bedingte formatierung
von: ChrisL
Geschrieben am: 15.04.2003 - 15:17:37

Hallo Matthes

Versuch mal diesen Teil hier zu ersetzen...
Select Case RaZelle.Value
Case "1"
' mal eine andere Variante mit Kreuz und Farbe
RaZelle.Borders(xlDiagonalDown).LineStyle = xlContinuous
RaZelle.Borders(xlDiagonalDown).Weight = xlThick
RaZelle.Borders(xlDiagonalUp).LineStyle = xlContinuous
RaZelle.Borders(xlDiagonalUp).Weight = xlThick
RaZelle.Font.ColorIndex = 26
Case "2"
RaZelle.Font.ColorIndex = 24
Case "3"
RaZelle.Font.ColorIndex = 3
' usw.
Case Else

Statt mit Select Case mit If... Like ... Then probieren.

Also z.B.

If RaZelle.Value = 1 Then
' mal eine andere Variante mit Kreuz und Farbe
RaZelle.Borders(xlDiagonalDown).LineStyle = xlContinuous
RaZelle.Borders(xlDiagonalDown).Weight = xlThick
RaZelle.Borders(xlDiagonalUp).LineStyle = xlContinuous
RaZelle.Borders(xlDiagonalUp).Weight = xlThick
RaZelle.Font.ColorIndex = 26
End If

If RaZelle.Value = 2 Then RaZelle.Font.ColorIndex = 24
If RaZelle.Value = 3 Then RaZelle.Font.ColorIndex = 3
' usw.

If RaZelle.Value Like "*" & test & "*" Then
...
End If

Gruss
Chris

  

Re: bedingte formatierung
von: Matthes
Geschrieben am: 16.04.2003 - 11:18:16

hallo chris, danke für die antwort

aber es funktioniert nicht, davon abgesehen das ich sie ja (wenn ich das richtig sehe) nun doch alle eintragen müßte , das würde ja per hand schneller gehen

  

Re: bedingte formatierung
von: Matthes
Geschrieben am: 16.04.2003 - 11:18:17

hallo chris, danke für die antwort

aber es funktioniert nicht, davon abgesehen das ich sie ja (wenn ich das richtig sehe) nun doch alle eintragen müßte , das würde ja per hand schneller gehen

  

Re: bedingte formatierung
von: ChrisL
Geschrieben am: 16.04.2003 - 11:22:21

Hallo Matthes

If RaZelle.Value Like "*" & test & "*" Then RaZelle.Font.ColorIndex = 24

bzw.
If RaZelle.Value Like "*test*" Then RaZelle.Font.ColorIndex = 24

Damit werden alle Zellen in denen das Wort "test" vorkommt eingefärbt. Verstehe das Problem nicht.

Gruss
Chris


  

Re: bedingte formatierung
von: Matthes
Geschrieben am: 16.04.2003 - 13:02:23

hallo chris nochmal danke für deine bemühungen

bei mir klappt das irgendwie nicht, ich kopier dir mal den quelltext rein

Sub nachtraeglich()
' erstellt von Hajo.Ziplies@web.de 14.12.02
' SCHRIFT
' für Hintergrund RaZelle.Interior.ColorIndex
Dim RaBereich As Range, RaZelle As Range
' Bereich der Wirksamkeit
Set RaBereich = Range("B3:B20000")
' ActiveSheet.Unprotect
For Each RaZelle In Selection
' überprüfen ob Zelle im vorgegebenen Bereich
If Not Intersect(RaZelle, RaBereich) Is Nothing Then
' Kreuz entfernen
RaZelle.Borders(xlDiagonalDown).LineStyle = xlNone
RaZelle.Borders(xlDiagonalUp).LineStyle = xlNone
Select Case RaZelle.Value
Case "1"
' mal eine andere Variante mit Kreuz und Farbe
RaZelle.Borders(xlDiagonalDown).LineStyle = xlContinuous
RaZelle.Borders(xlDiagonalDown).Weight = xlThick
RaZelle.Borders(xlDiagonalUp).LineStyle = xlContinuous
RaZelle.Borders(xlDiagonalUp).Weight = xlThick
RaZelle.Font.ColorIndex = 26
If RaZelle.Value = Test Then RaZelle.Font.ColorIndex = 24
If RaZelle.Value Like "*Test*" Then RaZelle.Font.ColorIndex = 24
' usw.
Case Else
RaZelle.Font.ColorIndex = 0
End Select
End If
Next RaZelle
' ActiveSheet.Protect
Set RaBereich = Nothing
End Sub

kannste mir sagen wo der fehler liegt ?

  

Re: bedingte formatierung
von: ChrisL
Geschrieben am: 16.04.2003 - 13:09:21

Hallo Matthes

Habe es jetzt nicht getestet, aber würde mal vermuten es liegt daran, dass du die If...Anweisung innerhalb der Select Case Anweisung hast. Damit wird die If...Abfrage nur ausgeführt wenn Case "1" vorhanden ist. Entweder wie anfänglich vorgeschlagen die Case Anweisungen durch If Anweisungen ersetzen oder die If..Like Anweisung ausserhalb der Case Anweisung, d.h. vor Select Case oder nach End Select.

Gruss
Chris

  

Re: bedingte formatierung
von: Matthes
Geschrieben am: 16.04.2003 - 13:46:21

langsam komm ich mir blöd vor ;)

hat leider nicht geklappt, habs vor und hinter der case einweisung versucht, ich habs auch so gemacht das es case "1" gibt aber die if anweisung wurde trotzdem nicht ausgeführt

gruss matthes

  

Re: bedingte formatierung
von: ChrisL
Geschrieben am: 16.04.2003 - 14:12:53

Hallo Matthes

getestet unter Excel 97:

Option Explicit

Sub nachtraeglich()
' erstellt von Hajo.Ziplies@web.de 14.12.02
' SCHRIFT
' für Hintergrund RaZelle.Interior.ColorIndex
Dim RaBereich As Range, RaZelle As Range
' Bereich der Wirksamkeit
Set RaBereich = Range("B3:B20000")
' ActiveSheet.Unprotect
For Each RaZelle In Selection
' überprüfen ob Zelle im vorgegebenen Bereich
If Not Intersect(RaZelle, RaBereich) Is Nothing Then
' Kreuz entfernen
RaZelle.Borders(xlDiagonalDown).LineStyle = xlNone
RaZelle.Borders(xlDiagonalUp).LineStyle = xlNone
Select Case RaZelle.Value
Case "1"
' mal eine andere Variante mit Kreuz und Farbe
RaZelle.Borders(xlDiagonalDown).LineStyle = xlContinuous
RaZelle.Borders(xlDiagonalDown).Weight = xlThick
RaZelle.Borders(xlDiagonalUp).LineStyle = xlContinuous
RaZelle.Borders(xlDiagonalUp).Weight = xlThick
RaZelle.Font.ColorIndex = 26
' usw.
Case Else
RaZelle.Font.ColorIndex = 0
End Select
If RaZelle.Value Like "*test*" Then RaZelle.Font.ColorIndex = 24
End If
Next RaZelle
' ActiveSheet.Protect
Set RaBereich = Nothing
End Sub


Gruss
Chris

PS: nicht vergessen den Bereich zu selektieren

  

Re: bedingte formatierung
von: Matthes
Geschrieben am: 16.04.2003 - 18:42:31

Danke es hat endlich geklappt lag wohl daran das ich
Option Explicit vergessen habe oben hinzuschreiben

gruß matthes

 

Beiträge aus den Excel-Beispielen zum Thema "bedingte formatierung"