2

特定のセルから特定の非テキスト文字を削除できるようにする VBA の次のユーザー定義関数を一緒にハックしました。

コードは次のとおりです。

Function removeSpecial(sInput As String) As String
    Dim sSpecialChars As String
    Dim i As Long
    sSpecialChars = "\/:*?™""®<>|.&@#(_+`©~);-+=^$!,'" 'This is your list of characters to be removed
    For i = 1 To Len(sSpecialChars)
        sInput = Replace$(sInput, Mid$(sSpecialChars, i, 1), " ")
    Next
    removeSpecial = sInput
End Function

コードのこの部分では、削除する文字を明確に定義しています。

sSpecialChars = "\/:*?™""®<>|.&@#(_+`©~);-+=^$!,'"

また、この基準内に通常のスペース文字 " " も含めたいと考えています。これを行うために使用できるある種のエスケープ文字があるかどうか疑問に思っていましたか?

したがって、私の目標は、この関数を実行して、指定された Excel セルから指定されたすべての文字を削除し、すべてのスペースも削除できるようにすることです。

また、Excel 内で =SUBSTITUTE 関数を使用してこれを実行できることはわかっていますが、VBA で可能かどうかを知りたいです。

編集:修正されました!シモコありがとう!

Function removeSpecial(sInput As String) As String
    Dim sSpecialChars As String
    Dim i As Long
    sSpecialChars = "\/:*?™""®<>|.&@# (_+`©~);-+=^$!,'" 'This is your list of characters to be removed
    For i = 1 To Len(sSpecialChars)
        sInput = Replace$(sInput, Mid$(sSpecialChars, i, 1), "") 'this will remove spaces
    Next
    removeSpecial = sInput
End Function
4

1 に答える 1

1

したがって、simoco からのアドバイスの後、次のように変更することができましたfor loop

For i = 1 To Len(sSpecialChars)
        sInput = Replace$(sInput, Mid$(sSpecialChars, i, 1), "") 'this will remove spaces
    Next

スプレッドシートの特定のセル内のすべての文字について、特殊文字が削除され、何も置き換えられません。これは基本的に、次のように一緒に使用される Replace$ および Mid$ 関数によって行われます。

sInput = Replace$(sInput, Mid$(sSpecialChars, i, 1), "") 'this will remove spaces

このコードは、 my を介して、位置 1 の文字から始まるセル内のすべての文字に対して実行されますfor loop

私の元の質問に出くわした場合、この回答が将来誰かに役立つことを願っています。

于 2014-03-14T23:59:37.607 に答える