Excel VBA Substituir caractere

2

Tentei pesquisar esse problema em particular, mas não consegui encontrá-lo.

Estou tentando substituir uma variedade de caracteres em uma string.

Eu tentei percorrer os caracteres usando seus códigos de caracteres, mas meu código será? aleatoriamente? exclua a string inteira em vez de apenas os caracteres especiais. (basicamente eu só quero as letras e números da string)

ABC-3.3%H14T-6

Gostaria apenas de querer

ABC33H14T6

O que é estranho sobre isso (para mim) é que meu código irá apagar a string em um caractere aleatório, nem sempre chr(41) ou qualquer outra coisa, ele muda toda vez que eu executo o código .. talvez seja um problema de formatação ?

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

Eu daria a você a maior parte do meu código, mas é sensível ao trabalho.

    
por user3062335 10.01.2014 / 22:43

2 respostas

0

Substituir a maneira como você faz isso não funcionará, já que esses charcters não alfanuméricos podem ter funções especiais, como jokers etc. Você precisa substituir dentro do VBA, não dentro do Excel.

Então, tente isso:

For Char = 33 To 47
    Sheets("Sheet1").Cells(FRow, 44).Value = Replace(Sheets("Sheet1").Cells(FRow, 44).Value, Chr(Char), "")
Next Char
    
por 10.01.2014 / 23:05
0

algo como regexp

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
    
por 12.01.2014 / 13:11