web-dev-qa-db-ja.com

文字列変数(VBA)の複数の文字を置き換える

文字列変数の複数のものをどのように置き換えることができますか?

ここに私の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

より良い解決策はありますか?

5
yuro

配列を使用して、その要素をループできます。

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

ジャンクの各要素は、サブストリングまたは単一の文字のいずれかです。

9
Gary's Student

それがほんの数文字の場合、私はマルコと一緒に行きますが、VBAです:

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

VBAである必要がありますか?この式も機能するはずです。

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

出力は「rplc」になります

0
Marco Vos

この投稿は非常に役に立ったので、自分の利点を生かす方法を共有したいと思いました。 「Gary's Student」から受け入れられた回答と このコメントCharles Williams を組み合わせて、与えられた文字列から数字以外の文字を削除するための洗練された方法を思いつきました。

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

これが誰かの役に立つことを願っています。乾杯!

0
SnowballsChance