51 Aufrufe
Gefragt in Tabellenkalkulation von thomas971 Einsteiger_in (11 Punkte)

Hallo ich versende in meiner Lagerliste nachstehendes Makro:

Kann dieses, wenn ja, mit welchem Befehl, erweitert werden, dass die "gefundene Zelle" farblich hervorgehoben wird?

Sorry, aber ich bin leider nicht sehr versiert in Excel 

Hier die verwendete Formel:

Sub suchen()
Dim strSuch As String, ws As Integer, rng As Range, strNeu As String
Start:
Do
strSuch = InputBox("Wonach wird gesucht?" & Chr(13) & "Mindestens 3 Buchstaben angeben!")
If strSuch = "" Or Len(strSuch) = 0 Then Exit Sub
Loop While Len(strSuch) < 3
ws = 1
Do While ws <= Worksheets.Count
Sheets(ws).Select
Set rng = Cells.Find(What:=strSuch, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False)
If rng Is Nothing And ws = Worksheets.Count Then
strNeu = MsgBox("Keine Begriff gefunden!" & Chr(13) & "Möchten sie erneut suchen?", vbYesNo)
If strNeu = vbNo Then
Exit Sub
Else
GoTo Start
End If
ElseIf rng Is Nothing And ws < Worksheets.Count Then
ws = ws + 1
Else
rng.Select
Exit Sub
End If
Loop
End Sub

Danke

Thomas

4 Antworten

0 Punkte
Beantwortet von m-o Profi (20.7k Punkte)

Hallo Thomas,

wenn du den Befehl

rng.Select 

ziemlich am Ende des Codes durch

rng.Interior.ColorIndex = 4

ersetzt, wird die (erste) gefundene Zelle hier mit der Hintergrundfarbe Grün formatiert. Du kannst hier eine Zahl zwischen 1 und 56 für verschiedene Farben einsetzen. Bei Null wird keine Hintergrundfarbe angezeigt.

Gruß

M.O.

0 Punkte
Beantwortet von thomas971 Einsteiger_in (11 Punkte)
Hallo M.O.

Vielen Dank für die rasche Antwort !

Funktioniert einwandfrei. Jedoch, wenn ich eine erneute Abfrage starte, bleibt das zuvor gefunden Feld grün markiert. Gibt´s evtl. einen Befehl, vorher alle "Zellenfarben" zu löschen?

Wenn das noch irgendwie realisierbar ist, so wäre ich MEGA HAPPY

Danke

Thomas
0 Punkte
Beantwortet von m-o Profi (20.7k Punkte)

Hallo Thomas,

hier der ergänzte Code:

Sub suchen()
Dim strSuch As String
Dim ws As Integer
Dim rng As Range
Dim strNeu As String

'alle Hintergrundfarben in allen Tabellenblättern löschen
For ws = 1 To ThisWorkbook.Worksheets.Count
  Worksheets(ws).UsedRange.Interior.ColorIndex = 0       '0 = keine Hintergrundfarbe
Next ws
Start:
Do
  strSuch = InputBox("Wonach wird gesucht?" & Chr(13) & "Mindestens 3 Buchstaben angeben!")
  If strSuch = "" Or Len(strSuch) = 0 Then Exit Sub
Loop While Len(strSuch) < 3
ws = 1
Do While ws <= Worksheets.Count
  Sheets(ws).Select
  Set rng = Cells.Find(What:=strSuch, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
    xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
    , SearchFormat:=False)
  If rng Is Nothing And ws = Worksheets.Count Then
    strNeu = MsgBox("Keine Begriff gefunden!" & Chr(13) & "Möchten sie erneut suchen?", vbYesNo)
    If strNeu = vbNo Then
    Exit Sub
   Else
    GoTo Start
  End If
 ElseIf rng Is Nothing And ws < Worksheets.Count Then
   ws = ws + 1
  Else
   rng.Interior.ColorIndex = 4
   Exit Sub
  End If
Loop
End Sub


Aber Achtung! Die Hintergrundfarbe wird in allen Tabellenblättern der Arbeitsmappe entfernt.

Gruß

M.O.

0 Punkte
Beantwortet von thomas971 Einsteiger_in (11 Punkte)
PERFEKT !!!

Vielen, vielen Dank

SG

Thomas
...