2

Я пытался осмотреть эту проблему, но не смог ее найти.

Я пытаюсь заменить ассортимент символов в строке.

Я пытался перебирать символы, используя их коды символов, но мой код будет?случайным образом? удалить всю строку, а не только специальные символы. (в основном я просто хочу буквы и цифры из строки)

АВС-3,3% H14T-6

Я бы просто хотел

ABC33H14T6

Что странного в этом (для меня) заключается в том, что мой код удаляет строку со случайным символом, это не всегда chr(41) или что-то еще, он меняется каждый раз, когда я запускаю код ... это может быть проблема с форматированием?

 For Char = 33 To 47
    Sheets("Sheet1").Cells(FRow, 44).Replace What:=Chr(Char), Replacement:="", LookAt:=xlPart
 Next Char

Я бы дал вам основную часть моего кода, но он чувствителен к работе.

2 ответа2

0

Замена так, как вы делаете, не сработает, поскольку эти не алфавитно-цифровые символы могут иметь специальные функции, такие как джокеры и т.д. Необходимо заменить в VBA, а не в Excel.

Так что попробуйте это вместо:

For Char = 33 To 47
    Sheets("Sheet1").Cells(FRow, 44).Value = Replace(Sheets("Sheet1").Cells(FRow, 44).Value, Chr(Char), "")
Next Char
0

что-то вроде этого

Sub test()
MsgBox KillChars("ABC-3.3%H14T-6")
End Sub

Function KillChars(strIn As String) As String
Dim objRegex
Set objRegex = CreateObject("vbscript.regexp")
With objRegex
.Pattern = "[^\w]+"
.Global = True
KillChars = .Replace(strIn, vbNullString)
End With
End Function

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .