2017-05-18 10 views
0

Wie ersetze ich Wörter in VBA? Zum Beispiel habe ich eine Spalte von Wörtern, aber einige enden mit U und E und ich möchte das U und E entfernen, wie mache ich das?Ersetzen von Wörtern in VBA

Cells.Replace What:="/*-", Replacement:="", LookAt:=xlPart, SearchOrder _ 
    :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False 

verwenden ich dies zum Beispiel ändern "& AAA/-" bis "AAA". Wie mache ich das gleiche für "AAA U" bis "AAA", kann ich nicht die gleiche Formel verwenden, da "U" ein gewöhnlicher Buchstabe ist? Meine Wortspalten bestehen aus etwa 20 verschiedenen Wörtern, die mit U enden, so dass ich das Wort auch nicht fest codieren kann.

Bitte helfen, danke!

+0

'Cells.Replace„U“,„“, xlPart' wenn keine Worte" U "Vor dem Ende – Slai

Antwort

0

Gerade Schleife über den Zellen, das letzte Zeichen eines jeden der Prüfung:

Sub Remove_E_and_U() 
    Dim r As Range 

    For Each r In ActiveSheet.UsedRange.Cells.SpecialCells(xlCellTypeConstants) 
     v = r.Value 
     If v <> "" Then 
      If Right(v, 1) = "U" Or Right(v, 1) = "E" Then 
       r.Value = Mid(v, 1, Len(v) - 1) 
      End If 
     End If 
    Next r 
End Sub 

EDIT # 1:

So schränken den Makro Spalten F durch H Ersetzen :

ActiveSheet.UsedRange.Cells.SpecialCells(xlCellTypeConstants) 

mit:

Range("F:H").Cells.SpecialCells(xlCellTypeConstants) 
+0

Hallo, vielen Dank! Es funktionierte! Aber wie kann ich es behalten, nur die E und U in Spalte F nur zu Spalte H zu entfernen? – yeocs93

+0

@ yeocs93 Siehe ** BEARBEITEN # 1 ** –

+0

Was ist, wenn ich eine Tabelle in der ActiveSheet sagen möchte Bereich (A3: B7) und geben Sie alle "U" oder "E" usw. in jede Zelle, so dass sie sein können in Zukunft geändert, wie ändere ich den Code? – yeocs93

0

Vielleicht Regex?

Dim RE As Object 
Set RE = CreateObject("vbscript.regexp") 

Pattern = "(\w+\s)(U|E)" 
replacement = "$1" 
RE.Pattern = Pattern 

Regex = RE.Replace(Range("A1").Value, replacement) 

BEARBEITEN; Dadurch wird der Raum halten AAA, wenn Sie den Raum bewegen, um den \s Teil des Musters auf der anderen Seite() wie entfernen möchten: "(\w+)(\sU)"

Verwandte Themen