179 Aufrufe
Gefragt in Tabellenkalkulation von jelena Experte (1k Punkte)
Hallo guten Tag, eine beliebige Zahl oder Text aus Zelle E10 ab Spalte B3 suchen und gefundene Zahl oder Text in Spalte B Zellenfarbe Gelb. Danke

8 Antworten

0 Punkte
Beantwortet von xlking Experte (1.9k Punkte)
Bearbeitet von xlking

Hallo Jelena,

Grundsätzlich so:

Sub FindeWert()

Dim lastrow As Long, found As Range, first As String
lastrow = Cells(Rows.Count, 2).End(xlUp).Row

With Range("B3:B" & lastrow)
  Set found = .Find(Range("E10").Value)
  If Not found Is Nothing Then
    first = found.Address
    found.Interior.Color = RGB(255, 255, 0)
    Do
      Set found = .FindNext(After:=found)
      found.Interior.Color = RGB(255, 255, 0)
      If found.Address = first Then Exit Do
    Loop
  End If
End With

End Sub

Gruß Mr. K.

0 Punkte
Beantwortet von jelena Experte (1k Punkte)
Hallo Mr. K.  soweit passt es, wenn möglich soll sich die Farbe sobald ich in E10 etwas eintrage in Spalte B ändern, sobald ich in Zelle E10 eine andere Zahl oder Text eingebe soll die Farbe in der vorherigen Zelle wieder zurückgestellt werden und die neue Zelle soll gelb erscheinen. Vielen Dank
0 Punkte
Beantwortet von xlking Experte (1.9k Punkte)

Hallo Jelena,

In dem Fall ist eine Bedingte Formatierung die bessere Wahl:

  • Markiere Spalte B
  • Wähle Bedingte Formatierung -> Neue Regel
  • Wähle Zellwert | gleich | =$E$10
  • wähle im Register "Ausfüllen" deine gewünschte Farbe
Gruß Mr. K.
0 Punkte
Beantwortet von jelena Experte (1k Punkte)
Bearbeitet von jelena
Hallo Mr. K. wäre es auch möglich, dass der Cursor zur jeweiligen Zelle springt. Danke
0 Punkte
Beantwortet von xlking Experte (1.9k Punkte)

Na klar, Dazu brauchst du eine Kombination aus beiden Lösungen. Für das Färben die bedingte Formatierung. Zum Anspringen das folgende VBA. Ggf. mehrfach ausführen.

Sub Finden()

Dim lastrow As Long, found As Range
lastrow = Cells(Rows.Count, 2).End(xlUp).Row

With Range("B3:B" & lastrow)
  If Not Intersect(ActiveCell, Range("B:B")) Is Nothing Then
    Set found = .Find(Range("E10").Value, After:=ActiveCell)
  Else
    Set found = .Find(Range("E10").Value)
  End If
  If Not found Is Nothing Then found.Select
End With

End Sub

Gruß Mr. K.

0 Punkte
Beantwortet von jelena Experte (1k Punkte)

Hallo Mr. K. ich bräuchte anstatt           Sub Finden()     etwas anderes, dieses Makro soll starten, sobald ich die Zahl oder Text eingegeben habe. Danke

0 Punkte
Beantwortet von xlking Experte (1.9k Punkte)
Bearbeitet von xlking

Hey Jelena,

du brauchst einen Button um die Sub auszulösen. Oder willst du jedes Mal deine Eingabe neu machen, wenn du bei mehreren Treffern von Einem zum Anderen springen musst?

Wie du ein Makro nach Eingabe starten kannst, hab ich dir hier schon mehrfach gezeigt. Das geht mit Worksheet_Change im entsprechenden Tabellenmodul. Einfach darin einen Code ausführen der das andere Makro aufruft und Fertig.

Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Address(False, False) = "E10" Then Call Finden
End Sub

Gruß Mr. K.

0 Punkte
Beantwortet von jelena Experte (1k Punkte)
Hallo Mr. K. vielen Dank
...