web-dev-qa-db-fra.com

Remplacer plusieurs caractères dans une variable de chaîne (VBA)

Comment puis-je remplacer plus d'une chose dans une variable chaîne?

Voici mon exemple de fonction dans vba:

Private Function ExampleFunc(ByVal unitNr$) As String
    If InStr(unitNr, "OE") > 0 Then
        unitNr = Replace(unitNr, "OE", "")
        unitNr = Replace(unitNr, ";", "")
    End If
...
End Function

Y a-t-il une meilleure solution?

4
yuro

Vous pouvez utiliser un tableau et une boucle sur ses éléments:

Sub MAIN()
    Dim s As String

    s = "123456qwerty"
    junk = Array("q", "w", "e", "r", "t", "y")

    For Each a In junk
        s = Replace(s, a, "")
    Next a

    MsgBox s
End Sub

Chaque élément de courrier indésirable peut être une sous-chaîne ou un seul caractère.

7
Gary's Student

S'il ne s'agit que de quelques caractères, j'irais avec Marco, mais sous VBA:

unitNr = Replace(Replace(unitNr, "OE", ""), ";", "")
0
F.Kokert

A-t-il besoin d'être VBA? Cette formule devrait également fonctionner:

=SUBSTITUTE(SUBSTITUTE("replace","e",""),"a","")

La sortie sera 'rplc'

0
Marco Vos

J'ai trouvé cet article très utile et j'ai donc pensé partager avec vous les avantages de mon utilisation. En combinant la réponse acceptée de "Gary's Student" avec ce commentaire par Charles Williams , j'ai trouvé un moyen simple de supprimer les caractères non numériques d'une chaîne donnée.

Public Function RemoveNonNumChars(s As String) As String
    Dim bytes() As Byte
    Dim char As String

    bytes = StrConv(s, vbFromUnicode)
        For Each c In bytes
            char = chr(c)
            If Not IsNumeric(char) Then
                'remove character from array
                s = Replace(s, char, "")
                Debug.Print "Removing " & char & " from string." & Chr(13) s
            End If
        Next c
End Function

J'espère que ça aidera quelqu'un. À votre santé!

0
SnowballsChance