I am modifying a User Defined Function which I wrote. It removes special characters from a cell (I have posted about this same function a handful of times, as I keep expanding it and learning more about the capabilites of VBA).
What I am trying to do now is add a MsgBox which pops up and tells the user exactley which special characters have been removed. I think that I can do this by using an If statement nested within my existing for loop, like so:
Function removeSpecial(sInput As String) As String
Dim sSpecialChars As String
Dim i As Long
Dim sReplaced As String
sSpecialChars = "\/:*?™""®<>|.&@# %(_+`©~);-+=^$!,'" 'This is your list of characters to be removed
For i = 1 To Len(sSpecialChars)
sInput = Replace$(sInput, Mid$(sSpecialChars, i, 1), "")
If (sInput = sSpecialChars) Then 'If statement to check when a character has been removed
sReplaced = sInput 'String variable to store each special character which was replaced
Next
MsgBox sReplaced & " These were removed"
sInput = UCase(sInput)
removeSpecial = sInput
End Function 'end of function
Currently this throws me into an infinate loop and I have to force close Excel. What I was trying to do with the above code was to check to see if an individual character located at whatever index the Mid function is currently looking at, and then save that character, if replaced, to the String sReplaced. Clearly though, I am in over my head.
Thanks you for the help.
Try this one:
Function removeSpecial(sInput As String) As String
Dim sSpecialChars As String
Dim i As Long
Dim sReplaced As String
Dim ln As Integer
sSpecialChars = "\/:*?™""®<>|.&@# %(_+`©~);-+=^$!,'" 'This is your list of characters to be removed
For i = 1 To Len(sSpecialChars)
ln = Len(sInput)
sInput = Replace$(sInput, Mid$(sSpecialChars, i, 1), "")
If ln <> Len(sInput) Then sReplaced = sReplaced & Mid$(sSpecialChars, i, 1)
Next
MsgBox sReplaced & " These were removed"
sInput = UCase(sInput)
removeSpecial = sInput
End Function 'end of function