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

Suche mit Ändern und Rücksetzen der Farbe

Suche mit Ändern und Rücksetzen der Farbe
21.11.2012 10:06:51
Wolfgang
Guten Tag, liebe Leute !
Ich habe mal wieder ein Problem, das meine mehr als bescheidenen VBA-Kenntnisse
übersteigt. (Schäm) Ich habe in meiner Excel-Symbolleiste ein (gefundenes)Makro eingebaut,
mit dem ich über eine Inputbox nach einem Suchbegriff suchen kann.
Im aktiven Tabellenblatt wird nach dem Begriff gesucht und alle Fundstellen
nacheinander farbig markiert.
Das klappt hervorragend und hilft mir wirklich sehr bei der täglichen Arbeit.
Problem: Beim Verlassen der Zelle wird die Hintergrundfarbe jeweils von der
"Markierungsfarbe" auf "Keine Farbe" zurückgesetzt. Allerdings arbeite
ich auch mit farbigen Tabellen.Also erhalte ich "weiße" Flecken darin.
Frage: Wie muß der untenstehende Code geändert werden, damit eine Zelle auf ihre
ursprüngliche Hintergrundfarbe zurückgesetzt wird ?
Für Eure Hilfe bedanke ich mich schon jetzt recht herzlich !
Viele Grüße
Wolfgang

Sub SUCHE()
'Suchfunktion:
'Das Makro öffnet ein Eingabefenster,in dem nach Begriffen
'in einem Tabellenblatt gesucht wird.Der Cursor springt nacheinander
'zu den Fundstellen und markiert sie farbig. Mit dem Abbrechen-Button
'wird die Suche beendet.
Dim Result As Object, erg As Object
On Error Resume Next
thing = InputBox("Bitte Suchbegriff eingeben")
Cells("A1").Select
Set erg = Cells.Find(What:=thing)
ErsteZelle = erg.Address
erg.Activate
gefunden:
If Not erg Is Nothing Then
'Färben:
Static vZelle(2) As Variant
If Not IsEmpty(vZelle(2)) Then
With vZelle(0).Interior
.Color = vZelle(1)
.Pattern = vZelle(2)
End With
End If
Set vZelle(0) = ActiveCell
With vZelle(0).Interior
vZelle(1) = .Color
vZelle(2) = .Pattern
.Color = 44500      '

GoOn = MsgBox("Nächsten finden ?", vbOKCancel + vbQuestion, "Weitersuchen ?")
If GoOn = 1 Then
Set erg = Cells.FindNext(after:=ActiveCell)
erg.Activate
GoTo gefunden
Else
If erg Is Nothing Then
MsgBox "Nichts gefunden !", vbOKOnly + vbExclamation, "Hinweis"
End If
End Sub

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suche mit Ändern und Rücksetzen der Farbe
23.11.2012 11:21:45
Wolfgang
Hallo, liebe Leute !
Nach emsiger Recherche und Ausprobieren hab ich selbst eine funktionierende Lösung gefunden.
Ich poste sie hier, falls Jemand die gleiche Frage hat:
Makro Suche in aktiven Tabellenblatt mit farbiger Markierung der Fundzellen
'Erklärung:
'Das Makro öffnet ein Eingabefenster,in dem nach Begriffen und Werten
'in einem Tabellenblatt gesucht werden kann. Der Cursor springt nacheinander
'zu den Fundstellen und markiert den Hintergrund farbig.
'Beim Verlassen der Zelle wird die Farbe zurückgesetzt.
'Mit dem Abbrechen-Button wird die Suche beendet.
Sub Suche_und_markiere()
Dim Result As Object, erg As Object, Farbe As Integer
On Error Resume Next
thing = InputBox("Bitte Suchbegriff eingeben")
Cells("A1").Select
Set erg = Cells.Find(What:=thing)
ErsteZelle = erg.Address
erg.Activate
gefunden:
If Not erg Is Nothing Then
'Färben:
Static vZelle(2) As Variant
If Not IsEmpty(vZelle(2)) Then
With vZelle(0).Interior
.Color = vZelle(1)
.Pattern = vZelle(2)
End With
End If
Set vZelle(0) = ActiveCell
With vZelle(0).Interior
vZelle(1) = .Color
Farbe = Selection.Interior.ColorIndex '

GoOn = MsgBox("Nächsten finden ?", vbOKCancel + vbQuestion, "Weitersuchen ?")
If GoOn = 1 Then
Set erg = Cells.FindNext(after:=ActiveCell)
erg.Activate
GoTo gefunden
Else
If erg Is Nothing Then
MsgBox "Nichts gefunden !", vbOKOnly + vbExclamation, "Hinweis"
End If
Weiter:
'MsgBox "Suche beendet !", vbOKOnly + vbExclamation, "Hinweis"
Selection.Interior.ColorIndex = Farbe ' End If
End Sub
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige