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

String markieren

String markieren
22.03.2009 22:18:55
mehmet
Hallo Forum,
in Spalte C1:C200 stehen diverse Strings und lang vor.
Wie kann ich bestimmte Elemente markieren (rot+fett):
////
Also wenn vier Schrägstriche Zeichen kommen.
Dank und Gruss
mehmet

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: String markieren
22.03.2009 23:39:58
Tom
Hallo Mehmet,
wenn Du nur die //// vier Striche hast und sonst keine weiteren Zeichen, dann kannst Du diese über Format - bedingte Formatierung (Wert - gleich "////") anlegen. Du mußt dazu nur den Bereich markieren, wo die Foramtierung greifen soll.
Gruß
Tom
AW: String markieren
22.03.2009 23:58:53
mehmet
Hallo Tom,
habe hier ein Makro:

Sub Markiere_2_oder_3_oder_4_Schraegstriche()
Dim lngSt As Long '
Dim rZelle As Range '
Dim strTemp As String '
Dim SuchWert As String '
For Each rZelle In Range("c1:c200")
If rZelle  "" Then
With rZelle
'suche: //
If InStr(.Value, "//") > 0 Then
SuchWert = "//"
'suche: ///
ElseIf InStr(.Value, "///") > 0 Then: SuchWert = "///"
'suche: ////
ElseIf InStr(.Value, "////") > 0 Then: SuchWert = "////"
Else
SuchWert = ""
End If
If InStr(.Value, SuchWert) > 0 And SuchWert > "" Then
strTemp = Right$(.Value, Len(.Value) - InStr(.Value, SuchWert) + 0)
strTemp = Left$(strTemp, Len(SuchWert))
lngSt = InStr(.Value, SuchWert)
.Characters(start:=lngSt, Length:=Len(SuchWert & strTemp)).Font.ColorIndex = 3
.Characters(start:=lngSt, Length:=Len(SuchWert & strTemp)).Font.FontStyle = "Fett"
End If
End With
End If
Next rZelle
End Sub


Leider markiert es mir nur die erste Fundstelle.
Wenn weitere in einer Zelle kommen, werden diese nicht markiert.
Wie kann man es einrichten, so dass alle Fundstellen (C1:C200) markiert werden.
Gruss
mehmet

Anzeige
AW: String markieren
23.03.2009 07:56:40
Tino
Hallo,
versuche es mal so
Sub Markieren()
Dim Bereich As Range
Set Bereich = Range("C1:C200")

Application.ScreenUpdating = False
    With Bereich.Font
     .Bold = False
     .ColorIndex = xlNone
    End With
    
    For Each Bereich In Bereich
     If Bereich <> "" And Bereich Like "*////*" Then
      With Bereich.Characters(InStr(Bereich, "////"), 4)
       .Font.ColorIndex = 3
       .Font.Bold = True
      End With
     End If
    Next Bereich
Application.ScreenUpdating = True

End Sub


Gruß Tino

Anzeige
ach so mehrmals
23.03.2009 09:45:19
Tino
Hallo,
ach so dieser Ausdruck kann auch mehrmals vorkommen.
Hier eine Möglichkeit
Sub Markieren()
Dim Bereich As Range
Dim objRegEx As Object, objMatch As Object
Dim i As Integer
Dim LRow As Long
Set objRegEx = CreateObject("VBScript.RegExp")

With objRegEx
 .MultiLine = True
 .Global = True
 .Pattern = "////"
End With

LRow = IIf(IsEmpty(Cells(200, 3)), Cells(200, 3).End(xlUp).Row, 200)
Set Bereich = Range("C1:C" & LRow) 'Suchbereich 

Application.ScreenUpdating = False
    With Bereich.Font
     .Bold = False
     .ColorIndex = xlAutomatic
    End With
    
    For Each Bereich In Bereich
     If Bereich <> "" Then
        
        Set objMatch = objRegEx.Execute(Bereich.Text)
        
        For i = 0 To objMatch.Count - 1
           With Bereich.Characters(objMatch(i).FirstIndex + 1, 4)
            .Font.ColorIndex = 3
            .Font.Bold = True
           End With
        Next i
        
     
     End If
    Next Bereich

Application.ScreenUpdating = True
Set objMatch = Nothing: Set objRegEx = Nothing
End Sub


Gruß Tino

Anzeige
AW: ach so mehrmals
23.03.2009 12:38:41
mehmet
Hallo,
dank Dir Tino.
Es funtioniert.
Zwei Fragen hätte ich noch bitte:
1.) kann ich diesen Makro auch für andere Zwecke benutzen.
Z.Z. wenn ich ein bestimmtes Wort suche Bsp. "Tino"

If Bereich "" And Bereich Like "*////*" Then
With Bereich.Characters(InStr(Bereich, "////"), 4)

kommt hier dann ..Like "*Tino*" und Bereich, "Tino"..
2.) geht es auch kurzer
Damit ich diesen Makro so benutzen kann, damit ich mehrere Stellen markieren kann.
Wenn ich z.Z. 15 verschiedene Wörter markieren möchte (C1:C200), dann muss ich wohl eine ganz lange
Module haben (Bsp.: markiere: Tino, tino, Mehmet, mehmet, Herber, herber .... )
Nur wenn es geht 8-)
Ich Danke dir herzlichlich
Gruss
mehmet
Anzeige
AW: ach so mehrmals
23.03.2009 13:22:09
Tino
Hallo,
ist ganz einfach, verwende den letzten Code von mir und erweitere die Liste bei Pattern entsprechend.
Sub Markieren()
Dim Bereich As Range
Dim objRegEx As Object, objMatch As Object
Dim i As Integer
Dim LRow As Long
Set objRegEx = CreateObject("VBScript.RegExp")

With objRegEx
 .IgnoreCase = True 'Groß u. Kleinschreibung nicht beachten, sonst False 
 .MultiLine = True
 .Global = True
 .Pattern = "////|Tino|Mehmet|Herber" 'Suchbegriffe durch | trennen 
End With

LRow = IIf(IsEmpty(Cells(200, 3)), Cells(200, 3).End(xlUp).Row, 200)
Set Bereich = Range("C1:C" & LRow) 'Suchbereich 

Application.ScreenUpdating = False
    With Bereich.Font
     .Bold = False
     .ColorIndex = xlAutomatic
    End With
    
    For Each Bereich In Bereich
     If Bereich <> "" Then
        
        Set objMatch = objRegEx.Execute(Bereich.Text)
        
        For i = 0 To objMatch.Count - 1
           With Bereich.Characters(objMatch(i).FirstIndex + 1, Len(objMatch(i)))
            .Font.ColorIndex = 3
            .Font.Bold = True
           End With
        Next i
        
     
     End If
    Next Bereich

Application.ScreenUpdating = True
Set objMatch = Nothing: Set objRegEx = Nothing
End Sub


Gruß Tino

Anzeige
es klappt, Dank Dir herzlich o.T.
23.03.2009 22:52:53
mehmet
.
Sorry, Tino. Nochmal bitte
26.03.2009 12:10:54
mehmet
Hallo Tino,
warum klappt es diesmal nicht:

Private Sub Markiere_BR_SN_FG_TS_etc()
Sheets("WX").Select
Dim Bereich As Range
Dim objRegEx As Object, objMatch As Object
Dim i As Integer
Dim LRow As Long
Set objRegEx = CreateObject("VBScript.RegExp")
With objRegEx
.IgnoreCase = True 'Groß u. Kleinschreibung nicht beachten, sonst False
.MultiLine = True
.Global = True
.Pattern = " BR | HZ | VA | FU | GR | RA | DZ | PR | SH | BC | VC | MI | SN | SG | IC | PL |  _
GR | VU | DU | SA | PO | SQ | FC | SS | DS | FZ | FG | TS |+|-" 'Suchbegriffe durch | trennen
End With
LRow = IIf(IsEmpty(Cells(200, 3)), Cells(200, 3).End(xlUp).Row, 200)
Set Bereich = Range("C1:C" & LRow) 'Suchbereich
'Application.ScreenUpdating = False
'    With Bereich.Font
'     .Bold = False
'     .ColorIndex = xlAutomatic
'    End With
For Each Bereich In Bereich
If Bereich  "" Then
Set objMatch = objRegEx.Execute(Bereich.Text)
For i = 0 To objMatch.Count - 1
With Bereich.Characters(objMatch(i).FirstIndex + 1, Len(objMatch(i)))
.Font.ColorIndex = 3
.Font.Bold = True
End With
Next i
End If
Next Bereich
'Application.ScreenUpdating = True
Set objMatch = Nothing: Set objRegEx = Nothing
Range("A1").Select
End Sub


Ich bekomme
Laufzeitfehler '5018':
Anwendungs- oder objektdefinierter Fehler.
Vorher hat es doch geklappt!
Gruss
mehmet

Anzeige
AW: Sorry, Tino. Nochmal bitte
26.03.2009 12:28:39
Tino
Hallo,
ganz einfach die Zeichen + und - sind reservierte Zeichen für bestimmte Funktionen.
Versuche es mal so und stell diese Zeichen in Eckige Klammern.

.Pattern = " BR | HZ | VA | FU | GR | RA | DZ | PR | SH | BC | VC | MI | SN | SG | IC | PL | GR | VU | DU | SA | PO | SQ | FC | SS | DS | FZ | FG | TS |[-]|[+]"


Gruß Tino

AW: Sorry, Tino. Nochmal bitte
26.03.2009 12:33:43
mehmet
Hurra, es klappt
Danke für den schnellen reply
Gruss
mehmet

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige