Hallöchen!
Wie kann ich in VBA programmieren, dass im Blatt „Tabelle“ der Bereich C7:C18 nach „=Einstellungen!C1“ abgesucht wird und dann die entsprechende Zeile von B:M markiert wird.
Beispiel
Im Blatt Einstellungen steht in Zelle C1 „TuS Neviges“. Im Blatt EInstellungen taucht der Name in C13 auf. B13:M13 sollen nun markiert werden.
Hintergrund
Der Bereich soll dann die Hintergrund-Farbe bekommen:
With Selection.Interior
.ColorIndex = 19
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
Vielen Dank für Eure Hilfe!
Gruß Daniel
Hallöchen!
Wieso so kompliziert? Probiers doch mal mit der bedingten Formatierung!
So gehts:
in der Spalte C: Format --> Bedingte Formatierung --> Zellwert ist --> gleich $C$1 (muss in jeder Zelle neu geschrieben werden!)
in der Spalte D: Format --> Bedingte Formatierung --> Formel ist --> $C$8=$C$1 (kann zeilenweise kopiert werden!)
Gruß Alex
Danke, aber so klappt es leider nicht
Hallo Alex,
danke für Deine schnelle Antwort! Ich versteh jedoch nicht, wie es mit Deiner Lösung klappen soll. Mit der bedingten Formatierung kann ich nur eine Zelle bearbeiten.
Mein Ziel soll sein, dass wenn in Spalte C der Wert „=Einstellungen!$C$1“ entspricht, dass dann der Bereich von C:M in der betreffenden Zeile markiert und gefärbt wird.
Gruß Daniel
Hallo Daniel
Du musst diese Aufgabe, wie oben beschrieben in zwei Schritten lösen. Bei mir hat’s so geklappt. (Excel 2003) Ich schicke dir die Datei, wenn du willst.
Gruß Alex
Hallo Alex!
Ich habe heute morgen nicht so ganz verstanden, wie Du das damit lösen wolltest, aber nachdem Du mir die Datei geschickt hast, konnte ich es sehr gut nachvollziehen. Vielen Dank für die Hilfe und für den Service per Mail! Es klappt wirklich gut 
Ich benutze diese Formel, um in einer Tabelle, die zuvor aus dem Internet kopiert und in Excel eingefügt und angepasst wird, um einen ausgesuchten Verein und seine Statistik innerhalb der Tabelle gelb zu färben. Ich habe per Aufzeichnen-Funktion alle 12 Mannschaften in der Tabelle entsprechen Deinem Tipp „bedingt formatiert“. Dies wollte ich nun in das Makro „Tabelle abschließen“ am Schluss einfügen, da die bedingte Formatierung nach dem Import der Tabelle aus dem Internet nach Excel verloren geht. Gibt es vielleicht eine einfache Möglichkeit, die bei mir durch den Makro-Rekorder entstandene Formel etwas zu verkürzen?
Sub zellen\_farbig()
Range("C7:C18").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, \_
Formula1:="=$X$4"
Selection.FormatConditions(1).Interior.ColorIndex = 19
Range("D7:M7,B7").Select
Range("B7").Activate
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$X$4=$C$7"
Selection.FormatConditions(1).Interior.ColorIndex = 19
Range("B8,D8:M8").Select
Range("D8").Activate
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$X$4=$C$8"
Selection.FormatConditions(1).Interior.ColorIndex = 19
Range("B9,D9:M9").Select
Range("D9").Activate
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$X$4=$C$9"
Selection.FormatConditions(1).Interior.ColorIndex = 19
Range("B10,D10:M10").Select
Range("D10").Activate
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$X$4=$C$10"
Selection.FormatConditions(1).Interior.ColorIndex = 19
Range("B11,D11:M11").Select
Range("D11").Activate
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$X$4=$C$11"
Selection.FormatConditions(1).Interior.ColorIndex = 19
Range("B12,D12:M12").Select
Range("D12").Activate
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$X$4=$C$12"
Selection.FormatConditions(1).Interior.ColorIndex = 19
Range("B13,D13:M13").Select
Range("D13").Activate
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$X$4=$C$13"
Selection.FormatConditions(1).Interior.ColorIndex = 19
Range("B14,D14:M14").Select
Range("D14").Activate
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$X$4=$C$14"
Selection.FormatConditions(1).Interior.ColorIndex = 19
Range("B15,D15:M15").Select
Range("D15").Activate
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$X$4=$C$15"
Selection.FormatConditions(1).Interior.ColorIndex = 19
Range("B16,D16:M16").Select
Range("D16").Activate
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$X$4=$C$16"
Selection.FormatConditions(1).Interior.ColorIndex = 19
Range("B17,D17:M17").Select
Range("D17").Activate
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$X$4=$C$17"
Selection.FormatConditions(1).Interior.ColorIndex = 19
Range("B18,D18:M18").Select
Range("D18").Activate
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$X$4=$C$18"
Selection.FormatConditions(1).Interior.ColorIndex = 19
Range("V3").Select
End Sub
Viele Grüße,
Daniel
Hallo, Daniel!
Gibt es vielleicht eine
einfache Möglichkeit, die bei mir durch den Makro-Rekorder
entstandene Formel etwas zu verkürzen?
Pauschal: (Fast) alle .Select oder .Activate ist überflüssig; statt
Sub zellen\_farbig()
Range("C7:C18").Select
Selection.FormatConditions.Delete
kannst Du auch
Range("C7:C18").FormatConditions.Delete
schreiben.
Auch bei der bedingten Formatierung funktionieren eigentlich relative Bezüge, d. h. die „$“ könntest Du u. U. weglassen (habe nicht geschaut, ob für jede Zelle die relativen Bezüge identisch sind) und so mehrere oder alle Ranges zusammenfassen.
Und last but not least kannst Du, wenn das nicht geht, die wiederkehrenden Aktionen in eine Schleife (oder, wenn keine Regelmäßigkeit in den abständen herrschen sollte, in eine Prozedur) packen (und diese Prozedur dann parametriert aufrufen).
Dazu scheint mir der Teil
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression,
Formula1:="=$X$4=$C$8"
Selection.FormatConditions(1).Interior.ColorIndex = 19
geeignet zu sein. Hat vor allem den Vorteil, dass Du nur ein Mal die Farbe ändern musst, wenn Du sie ändern willst. So musst Du über Deine ganze Prozedur rennen und ColorIndex 10 Mal oder so ändern.
Gruß, Manfred
weis zwar nicht wie gut du VBA kannst aber hier mal eine etwas andere Lösung.
1.Code in: betreffendes Tabellenblat
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address „$C$1“ Then Exit Sub
Suchen
End Sub
2.Code in ein Modul
Sub Suchen()
Dim rng As Range
Dim sFind As String
Range(„B7:M18“).ClearFormats
sFind = Range(„C1“).Value
If sFind = „“ Then Exit Sub
Set rng = Range(„c7:c18“).Find( _
what:=sFind, lookat:=xlWhole, LookIn:=xlValues)
If rng Is Nothing Then
Beep
MsgBox „Suchbegriff wurde nicht gefunden!“
Exit Sub
End If
Range(rng.Offset(0, -1), rng.Offset(0, 10)).Interior.ColorIndex = 3
End Sub
aber Vorsicht: beim verwenden dieses Codes wird im betreffendem Tabellenblatt die Formatierungen von Bereich B7 : M18 gelöscht
mfg
Spaguzzi
ersuche um Rückmeldung obs funzt
Danke für die Info /// Statistik_beta zum angucken
Hallo Spaguzzi,
vielen Dank für Deine Mühe! Ich habe von VBA nur sehr wenig Erfahrung und mache i.d.R. alles über die Aufzeichnen-Funktion. Ich habe auch vorher noch nie eine Programmiersprache gekonnt, deshalb fällt mir VBA auch nicht so einfach.
Bei meiner Statistik ist es wichtig, dass die Formatierungen der Tabelle erhalten bleiben. Ich habe Deinen Code mal kurz angetestet, allerdings hat er nur die Formatierungen der betreffenden Zellen gelöscht. Da die Formatierungen allerdings erhalten bleiben müssen, ist es wohl besser, wenn ich bei der bisherigen Lösung bleibe, auch wenn sie etwas umständlicher ist - was auch nicht weiter schlimm ist, nur dass die Datei etwas größer ist.
Wenn Du oder einer von den anderen Interesse hat, kann er sich die Statistik unter folgender Adresse runterladen / angucken (1.85 MB):
http://www.kingpong.de/rangliste/TT-Statistik_beta.xls
Viele Grüße,
Daniel
Danke
Hallo Manfred,
vielen Dank für die Infos!
Gruß Daniel