VBA-Suche Problem

13/07/2009 - 11:10 von HPreisker | Report spam
Guten Tag, ich erbitte Eure Hilfe:
das nachfolgende kleine Makro macht folgendes:
1. öffnet ein Eingabefeld und erwartet eine Eingabe
2. nimmt von dieser Eingabe die ersten 5 Stellen und
3. sucht diese 5 Stellen im Arbeitsblatt und fàrbt die Fundstellen
ein.

Das Problem:
Die SUCHE soll sich nicht auf den ganzen Zellinhalt beziehen, sondern
nur auf die ersten 5 Stellen des Zillinhaltes.

Beispiel:
Eingabe in Eingabefeld: "Microsoft"
gesucht wird also "Micro" und wird auch gefunden, wenn in einer Zelle
"Micro" steht.
Wenn aber in der Zelle "Microsoft" steht, wird die Zelle nicht
gefunden.
Hat jemand einen Tip?
Gruß Hans

Sub A_allgemeineSuche()
Cells.Select
counter = counter + 1
Suche = Left(InputBox("gesuchten Wert eingeben"), 5)
Selection.FormatConditions.Add Type:=xlCellValue,
Operator:=xlEqual, _
Formula1:="=""" & Suche & """"
Selection.FormatConditions(counter).Interior.ColorIndex = (45 -
(counter))
End Sub

Hans Preisker
 

Lesen sie die antworten

#1 Andreas Killer
13/07/2009 - 12:18 | Warnen spam
On 13 Jul., 11:10, HPreisker wrote:

das nachfolgende kleine Makro macht folgendes:
1. öffnet ein Eingabefeld und erwartet eine Eingabe
2. nimmt von dieser Eingabe die ersten 5 Stellen und
3. sucht diese 5 Stellen im Arbeitsblatt und fàrbt die Fundstellen


Nö, es setzt eine bedingte Formatierung, das ist was anderes!

Wieso überhaupt so? Hat das einen tieferen Sinn?

Die SUCHE soll sich nicht auf den ganzen Zellinhalt beziehen, sondern
nur auf die ersten 5 Stellen des Zillinhaltes.


Dann musst Du eine Formel in die bedingte Formatierung eingeben:

Suche = LINKS(Zelle, LÄNGE(Suche))

Beispiel:
Eingabe in Eingabefeld: "Microsoft"
gesucht wird also "Micro" und wird auch gefunden, wenn in einer Zelle
"Micro" steht.
Wenn aber in der Zelle "Microsoft" steht, wird die Zelle nicht
gefunden.
Hat jemand einen Tip?


Ich würde lieber richtig suchen, das hat den Vorteil das Du mit
Wildcards arbeiten kannst.

Zum Beispiel kannst Du nach "Micro*" suchen und gefunden wird alles
was mit "Micro" beginnt.
Suchst Du hingegen nach "Micro", dann wird auch nur "Micro" gefunden
und nicht "Micros" oder "Mirc".

Man kann aber auch nach "M*s*" suchen um "Microsoft" zu finden.

Andreas.

Dim Counter As Integer

Sub A_allgemeineSuche()
Dim Bereich As Range, C As Range, FirstC As Range
Dim Suche As String

'Bereich festlegen
Set Bereich = Cells
Suche = InputBox("gesuchten Wert eingeben")

'Suche initialisieren
Set C = Bereich.Find(Suche, LookIn:=xlValues, LookAt:=xlWhole)
If C Is Nothing Then
MsgBox "Nicht gefunden"
Exit Sub
End If

'Farbe hochzàhlen
Counter = Counter + 1
'erste Zelle merken
Set FirstC = C
Do
'Einfàrben
C.Interior.ColorIndex = (45 - (Counter))
'Nàchstes Vorkommen suchen
Set C = Bereich.FindNext(C)
'Wiederhole bis erste Zelle
Loop Until C.Address = FirstC.Address
End Sub

Ähnliche fragen