2016-05-02 11 views
3

文字列変数で複数のものを置き換えるにはどうすればよいですか? 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 

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

+0

私は「いいえ」:-)は –

+0

あなたは配列とループ内での迷惑をかける可能性がOK見えると言うでしょう配列の要素を通して。 –

答えて

6

ことウィルあなたは、その要素を超える配列とループを使用することができます。

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 

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

+0

これは私が必要なものです! :) どうもありがとう。 – yuro

0

VBAにする必要がありますか?この式はまた、動作するはずです:

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

出力は「RPLC」

+0

(OPにVBAが必要な場合は、これをVBAの式にすることができます) – BruceWayne

+0

@marcovos VBAで必要です。 – yuro

0

私はこの記事を非常に参考にして、どのように私が自分の利益にそれを利用できるのかを分かりました。 "Gary's Student"の回答をthis commentと組み合わせて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

それはほんの数文字程度であれば、私はVBAマルコとが、中に行くだろう:

unitNr = Replace(Replace(unitNr, "OE", ""), ";", "") 
関連する問題