Weitere Makro-Frage

11/12/2008 - 14:56 von Harri Märki | Report spam
Hallo zusammen

Ich habe ergànzend zu meiner Frage von gestern (Makro ausführen sobald Text
in Zelle steht) eine weitere Frage.

Mit dem Makro:

Sub Farbe()
'
ActiveWorkbook.Sheets("Tabelle1").Range("B:B").Value = _
ActiveSheet.Range("C:C").Value
With Range("B1:B100").Characters(Start:=1, Length:=5).Font
.Name = "Verdana"
.FontStyle = "Standard"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 5
End With
With Range("B1:B100").Characters(Start:=6, Length:0).Font
.Name = "Verdana"
.FontStyle = "Standard"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 1
End With
End Sub

Kann ich zwar sagen, dass er die entsprechenden Buchstaben / Zahlen ind der
im Makro gewàhlten Schriftart und Farbe etc. macht.

Ich suche jetzt aber noch folgendes. Mit einem Makro soll der Zellinhalt
nach einer bestimmten Zeichenfolge (resp. Wort) gesucht werden und dieses
dann im Verfahren wie im Makro oben, entpsrechend behandeln. Das kann auch
nur ein Wortteil sein.

Zum Beispiel: gesucht wird "Ràtsel"

In der Zelle steht: "Des Ràtslesl Lösung" --> das Wort Ràtsel wird
andersfarbig dargestellt (.ColorIndex = 5).

oder es steht: "Das Kreutzwortràtsel" --> auch hier soll nur der Wortteil
"Ràtsel" anders dargestellt werden.

Ich habe nun verschiedene Wörter, nach denen gesucht wird. Dabei kann es
auch mal vorkommen, dass zwei Wörter (als alleinstehend oder als Wortteil)
vorkommen. Diese sollen entsprechend hervorgehoben werden.

Also ganz im Sinne von "WENN in der Zelle xy das Wort "Ràtsel" vorhanden
ist, dann markiere "Ràtsel" mit Farbe blau (eben dieses .ColorIndex = 5)"

Ich weis nicht, wie ich das anpacken soll. Habt ihr mir da eine Lösung?

Gruss Harri
 

Lesen sie die antworten

#1 Claus Busch
11/12/2008 - 17:59 | Warnen spam
Hallo Harri,

Am Thu, 11 Dec 2008 05:56:03 -0800 schrieb Harri Màrki:

Ich suche jetzt aber noch folgendes. Mit einem Makro soll der Zellinhalt
nach einer bestimmten Zeichenfolge (resp. Wort) gesucht werden und dieses
dann im Verfahren wie im Makro oben, entpsrechend behandeln. Das kann auch
nur ein Wortteil sein.

Zum Beispiel: gesucht wird "Ràtsel"

In der Zelle steht: "Des Ràtslesl Lösung" --> das Wort Ràtsel wird
andersfarbig dargestellt (.ColorIndex = 5).

oder es steht: "Das Kreutzwortràtsel" --> auch hier soll nur der Wortteil
"Ràtsel" anders dargestellt werden.



schau mal, ob du mit folgendem Code etwas anfangen kannst. Über eine
InputBox gibst du den Suchstring ein. Der Bereich in Spalte B wird
zuerst auf Schriftfarbe schwarz gestellt, damit du wieder nach einem
neuen Begriff suchen kannst.

Sub Farbe()

Dim strSuch As String
Dim strSuch1 As String
Dim strSuch2 As String
Dim rngZelle As Range
Dim LRow As Long
Dim Anfang As Integer
Dim Laenge As Integer

LRow = Range("C" & Rows.Count).End(xlUp).Row
ActiveWorkbook.Sheets("Tabelle1").Range("B1:B" & LRow).Value = _
ActiveSheet.Range("C1:C" & LRow).Value
Range("B1:B" & LRow).Font.ColorIndex = xlAutomatic

strSuch = Application.InputBox("Bitte gesuchten String eingeben", _
"Suche", Type:=2)
strSuch1 = WorksheetFunction.Proper(strSuch)
strSuch2 = LCase(strSuch)
Laenge = Len(strSuch)

For Each rngZelle In Range("B1:B" & LRow)
If InStr(1, rngZelle, strSuch1) = 1 Then
Anfang = InStr(1, rngZelle, strSuch1)
With rngZelle.Characters(Anfang, Laenge).Font
.Name = "Verdana"
.FontStyle = "Standard"
.Size = 10
.ColorIndex = 5
End With
With rngZelle.Characters(Laenge + 1, Len(rngZelle) -
Laenge).Font
.Name = "Verdana"
.FontStyle = "Standard"
.Size = 10
.ColorIndex = 1
End With
ElseIf InStr(1, rngZelle, strSuch1) > 1 Then
Anfang = InStr(1, rngZelle, strSuch1)
With rngZelle.Characters(1, Anfang - 1).Font
.Name = "Verdana"
.FontStyle = "Standard"
.Size = 10
.ColorIndex = 1
End With
With rngZelle.Characters(Anfang, Laenge).Font
.Name = "Verdana"
.FontStyle = "Standard"
.Size = 10
.ColorIndex = 5
End With
With rngZelle.Characters(Anfang + Laenge + 1, Len(rngZelle) _
- (Anfang + Laenge)).Font
.Name = "Verdana"
.FontStyle = "Standard"
.Size = 10
.ColorIndex = 1
End With
ElseIf rngZelle Like "*" & strSuch2 & "*" Then
Anfang = InStr(1, rngZelle, strSuch2)
With rngZelle.Characters(1, Anfang - 1).Font
.Name = "Verdana"
.FontStyle = "Standard"
.Size = 10
.ColorIndex = 1
End With
With rngZelle.Characters(Anfang, Laenge).Font
.Name = "Verdana"
.FontStyle = "Standard"
.Size = 10
.ColorIndex = 5
End With
With rngZelle.Characters(Anfang + Laenge + 1, Len(rngZelle) _
- (Anfang + Laenge)).Font
.Name = "Verdana"
.FontStyle = "Standard"
.Size = 10
.ColorIndex = 1
End With
End If
Next

End Sub


Mit freundlichen Grüssen
Claus Busch
Win XP Prof SP3 / Vista Ultimate SP1
Office 2003 SP3 / 2007 Ultimate SP1

Ähnliche fragen