2016-09-27 2 views
0

Ich möchte einen Text zwischen 2 Zeichen finden und formatieren, dass nur Text Beispiel: Zelle a1 = Hallo! das ist der Test! sentance Ich möchte nur den Teil zwischen den Ausrufezeichen ändern.finden Sie alles zwischen 2 Zeichen und Format in VBA

Sub Macro2() 
Dim varFound As Variant, varSearch As Variant 
Dim strAddress As String, intPos As Integer 
varSearch = "!*!" 
Set varFound = Cells.Find(varSearch, LookIn:=xlValues, LookAt:=xlPart) 
If Not varFound Is Nothing Then 
strAddress = varFound.Address 
Do 
With varFound 
    Do 
    intPos = InStr(intPos + 1, .Value, varSearch, vbTextCompare) 
    If intPos Then 
    .Characters(Start:=intPos, Length:=Len(varSearch)).Font.FontStyle = "Bold" 
    .Characters(Start:=intPos, Length:=Len(varSearch)).Font.ColorIndex = 3 
    End If 
Loop Until intPos = 0 
End With 


Set varFound = Cells.FindNext(varFound) 
Loop While Not varFound Is Nothing And _ 
varFound.Address <> strAddress 
End If 
End Sub 
` 
+1

Der beste Weg ist die Verwendung regulärer Ausdrücke. Ich lade diesen Link zu sehen: http://stackoverflow.com/questions/22542834/how-to-use-regular-expressions-regex-in-microsoft-excel-both-in-cell-and-loops – basslo

Antwort

1

Ohne Regex, eine einfache Schleife über die Zeichen verwendet; Wählen Sie die Zellen wollen und verarbeiten laufen:

Sub poiuyt() 
    Dim r As Range, st As String, boo As Boolean 
    Dim L As Long, i As Long 

    For Each r In Selection 
     st = r.Text 
     boo = False 
     L = Len(st) 
     For i = 1 To L 
      If Mid(st, i, 1) = "!" Then 
       boo = Not boo 
      Else 
       If boo Then r.Characters(i, 1).Font.Bold = True 
      End If 
     Next i 
    Next r 
End Sub 

Bevor:

enter image description here

und nach:

enter image description here

Ändern Sie den Code ein beliebiges Zeichen reflektieren Sie die Formatierung benötigen.

+0

vielen Dank viel ist es wirklich eine brillante Lösung –

+0

@ ercümenttüzgen Ich habe gerade den Code tun, was ein Mensch tun würde. –

Verwandte Themen