Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1516to1520
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

VBA - Bedingte Formatierung mit variabler Spalte

VBA - Bedingte Formatierung mit variabler Spalte
06.10.2016 12:56:14
Nik
Hallo zusammen,
ich habe VBA Makro, welches die erste Reihe eine Tabelle nach dem Text "PLT" durchsucht und dann diese Spalte markiert (von 2 bis 9999) und eine bedingte Formatierung einfügt. Das funktioniert auch soweit gut.
Problem: Das ganze funktioniert aber nur, wenn die zu formatierenden Daten in Reihe "F" stehen.
Frage: Wie ändere ich die Formel so, dass egal wo die PLT Daten stehen, die bedingte Formatierung greift?
Hier die Tabelle zum besseren Verständnis.
https://www.herber.de/bbs/user/108624.xlsm
Danke im Voraus
Gruß, Nik
Sub AAA()
Dim c As Range
Set c = Rows(1).Find("*PLT*", LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
Range(Cells(2, c.Column), Cells(9999, c.Column)).Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
' Bedingte Formatierung anlegen
.FormatConditions.Delete
' Bedingung für grünen Zellhintergrund
With .FormatConditions.Add(Type:=xlExpression, Formula1:="=ODER($F2=""AS"";$F2=""BH" _
";$F2=""BM"";$F2=""BO"")")
.Interior.ColorIndex = 43
End With
' Bedingung für blauen Zellhintergrund
With .FormatConditions.Add(Type:=xlExpression, Formula1:="=ODER($F2=""FA"";$F2=""FC" _
";$F2=""SL"")")
.Interior.ColorIndex = 37
End With
' Bedingung für gelben Zellhintergrund
With .FormatConditions.Add(Type:=xlExpression, Formula1:="=ODER($F2=""BI"";$F2=""BN" _
";$F2=""BT"")")
.Interior.ColorIndex = 6
End With
End With
Else
MsgBox "PLT wurde nicht gefunden"
End If
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: VBA - Bedingte Formatierung mit variabler Spalte
06.10.2016 13:16:50
Rudi
Hallo,
meine Idee dazu:
Sub AAA()
Dim c As Range, strRange As String
Const strDummy As String = "###"
Set c = Rows(1).Find("*PLT*", LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
strRange = c.Offset(1).Address(0, 0)
Range(Cells(2, c.Column), Cells(9999, c.Column)).Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
' Bedingte Formatierung anlegen
.FormatConditions.Delete
' Bedingung für grünen Zellhintergrund
With .FormatConditions.Add(Type:=xlExpression, _
Formula1:=Replace("=ODER(###=""AS"";###=""BH"";###=""BM"";###=""BO"")", strDummy,  _
strRange))
.Interior.ColorIndex = 43
End With
' Bedingung für blauen Zellhintergrund
With .FormatConditions.Add(Type:=xlExpression, _
Formula1:=Replace("=ODER(###=""FA"";###=""FC"";###=""SL"")", strDummy, strRange))
.Interior.ColorIndex = 37
End With
' Bedingung für gelben Zellhintergrund
With .FormatConditions.Add(Type:=xlExpression, _
Formula1:=Replace("=ODER(###=""BI"";###=""BN"";###=""BT"")", strDummy, strRange))
.Interior.ColorIndex = 6
End With
End With
Else
MsgBox "PLT wurde nicht gefunden"
End If
End Sub
Gruß
Rudi
Anzeige
AW: VBA - Bedingte Formatierung mit variabler Spalte
07.10.2016 07:17:56
Nik
Danke Rudi!
dein Lösungsansatz funktioniert auch wunderbar :-)
Ich konnte damit auch ein anderes Problem, in einem anderen Makro, in den Griff bekommen :-D
Gruß, Nik
AW: VBA - Bedingte Formatierung mit variabler Spalte
06.10.2016 13:21:05
Daniel
Hi
schreibs mal so:
mit IstZahl/Finden kannst du die Bedingung so formulieren, dass du den Bezug nur einmal benötigst.
bei der Z1S1-Bezugsart kannst du die Spalte als Spaltennummer angeben, diese lässt sich einfacher aus dem .Find-Ergebnis extrahieren als der Buchstabe.
.Formula1 = "=IstZahl(Finden(Z(0)S" & c.column & ";""-AS-BH-BM-BO-""))"
Gruß Daniel
Anzeige
AW: VBA - Bedingte Formatierung mit variabler Spalte
07.10.2016 06:51:45
Nik
Hallo Daniel,
da hat eine Klammer gefehlt, aber jetzt funktioniert das soweit ganz gut.
Problem: Jedoch färbt er auch die Zellen die keinen Inhalt haben.
Kann man das irgendwie umgehen?
Formula1:="=IstZahl(Finden(Z(0)S" & c.Column & ";""-AS-BH-BM-BO-""))")

Gruß, Nik

377 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige