文字列変数の複数のものをどのように置き換えることができますか?
ここに私の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
より良い解決策はありますか?
配列を使用して、その要素をループできます。
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
ジャンクの各要素は、サブストリングまたは単一の文字のいずれかです。
それがほんの数文字の場合、私はマルコと一緒に行きますが、VBAです:
unitNr = Replace(Replace(unitNr, "OE", ""), ";", "")
VBAである必要がありますか?この式も機能するはずです。
=SUBSTITUTE(SUBSTITUTE("replace","e",""),"a","")
出力は「rplc」になります
この投稿は非常に役に立ったので、自分の利点を生かす方法を共有したいと思いました。 「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
これが誰かの役に立つことを願っています。乾杯!