Einzelnes Wort in Zelle suchen und Einfärben
#1
Guten Morgen zusammen,

ich komme gerade nicht mehr weiter und hoffe ihr könnt mir helfen.

Ich habe Beispielsweise in Zelle C10 ein Wort stehen. Dieses Wort möchte ich nun in der Zelle G10 suchen in welcher mehrere Wörter stehen (können).
Findet er dieses Wort in Zelle G10, soll NUR dieses Wort grün eingefärbt und Fett dargestellt werden.

Mein Ansatz (über den ich nicht hinaus komme) sieht so aus:
Code:
Sub Test()

If Worksheets("Tabelle1").Cells(10, 7).Value Like "*" & Worksheets("Tabelle1").Cells(10, 3) & "*" Then

    With Worksheets("Tabelle1").Cells(10, 7)
    .Font.ColorIndex = 10
    .Font.Bold = True
    End With

End If

End Sub

Das Problem ist, dass Excel mir hier die komplette Zelle grün einfärbt. Wie muss ich den Code abändern, dass er mit tatsächlich nur das Such-Wort aus Zelle C10 grün und fett macht?
Ich weiß leider nicht weiter :(

Danke und Gruß
Sebbo
Top
#2
Hallöchen,

Du müsstest feststellen, von welcher Position bis zu welcher das Wort geht. Dann kannst Du über die Charakters das Wort gezielt einfärben.

Characters (Start, Length)

im Prinzip dann

Worksheets("Sheet1").Range("A1").Characters(3, 5).Font. ...

Die Position bekommst Du mit INSTR, das kennst Du ?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#3
Hallo


versuch es mal so.

Code:
Sub Test()
    Dim Wort As String, Pos As Integer
    With Worksheets("Tabelle1")
        Wort = .Cells(10, 3)
        Pos = InStr(.Cells(10, 7), Wort)
   
        If Pos > 0 Then
            .Cells(10, 7).Font.Color = vbBlack 'reset
            .Cells(10, 7).Characters(Start:=Pos, Length:=Len(Wort)).Font.Color = vbRed
        End If
    End With

End Sub

LG UweD
Top
#4
Super, danke für den Ansatz :-)

Die Funktion INSTR kenne ich wie so viele (noch) nicht, habe aber dank Dr. Google ein bisschen was darüber heraus gefunden.

Folgendermaßen habe ich den Code jetzt angepasst, mit dem Ziel, Position und Länge des gesuchten Wortes vor dem Einfärben zu ermitteln:

Code:
Sub Test()

Dim Suche As String
Dim Laenge As Integer

Laenge = Len(Worksheets("Tabelle1").Cells(10, 3))

Suche = InStr(1, Worksheets("Tabelle1").Cells(10, 7), Worksheets("Tabelle1").Cells(10, 3))

Worksheets("Tabelle1").Cells(10, 7).Charakters(Suche, Laenge).Font.ColorIndex = 10

End Sub

Die Länge gibt er mir korrekt aus. Die Position in der entsprechenden Zelle auch.

Nur in der letzten Zeile wenn es an das Einfärben geht, bringt er mir eine Fehlermeldung "Laufzeitfehler 438: Objekt unterstützt diese Eigenschaft oder Methode nicht".

Kannst du mir sagen woran das liegt?

Danke für deine Hilfe :-)

Viele Grüße
Sebbo

Vielen Dank auch an dich Uwe,

das werde ich doch gleich mal ausprobieren :-)

Grüße
Sebbo
Top
#5
Hallo ihr beiden!

Ich wollte nur Danke sagen für den Ansatz und den Code, er funktioniert einwandfrei und gelernt habe ich auch wieder was  :19:

Viele Grüße
Sebbo
Top
#6
Hallöchen,

danke für die Rückmeldung.
Freut mich immer wieder, wenn ein user sich nicht als copy&paste-Anwender herausstellt sondern auch mitmacht und lernt Smile

Ansonsten, nicht jeder hat einen passenden Charakters  :22: Versuch's mal mit Characters  :100:
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#7
Ja gerne, und copy&paste ist zwar manchmal verlockend, aber ich will ja auch was lernen und mich verbessern Wink

Danke für den Hinweis mit "CharaKters". Hab mehrmals den Code kontrolliert, aber das habe ich echt nicht gesehen. Manchmal schon kurios...
Jetzt funktioniert es jedenfalls auch mit meiner Variante *freu*

Viele Grüße
Sebbo
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste