Removing All Spaces in String

后端 未结 7 1353
滥情空心
滥情空心 2021-01-11 13:33

I created a macro for removing all whitespace in a string, specifically an email address. However it only removes about 95% of the whitespace, and leaves a few.

My c

相关标签:
7条回答
  • 2021-01-11 13:53

    I copied a HTML table with data and pasted in excel but the cells were filled with unwanted space and all methods posted here didn't work so I debugged and I discovered that it wasn't actually space chars (ASCII 32) it was Non-breaking space) (ASCII 160) or HTML  

    So to make it work with that Non-breaking space char I did this:

    Sub NoSpaces()
        Dim w As Range
    
        For Each w In Selection.Cells
            w.Value = Replace(w.Value, " ", vbNullString)
            w.Value = Replace(w.Value, Chr(160), vbNullString)
        Next
    End Sub
    
    0 讨论(0)
  • 2021-01-11 13:56

    And to add to the excellent advice from all the great contributors, try the

    TRIM or LTRIM, or RTRIM and you can read more about these functions here:

    https://msdn.microsoft.com/en-us/library/office/gg278916.aspx

    Now this does not remove embedded spaces (spaces in between the letters) but it will remove any leading and trailing spaces.

    Hope this helps.

    0 讨论(0)
  • 2021-01-11 14:00

    Space Problem with Excel ok, the only way i see this two types of space is by converting their Ascii code value of which I do it here now to explain this function i made, it will just filter the string character by character checking if its equal to the two types of space i mentioned. if not it will concatenate that character into the string which will be the final value after the loop. hope this helps. Thanks.

    Function spaceremove(strs) As String
    Dim str As String
    Dim nstr As String
    Dim sstr As String
    Dim x As Integer
    str = strs
    
    For x = 1 To VBA.Len(str)
        sstr = Left(Mid(str, x), 1)
        If sstr = " " Or sstr = " " Then
        Else
            nstr = nstr & "" & sstr
        End If
    
    Next x
    spaceremove = nstr
    End Function
    
    0 讨论(0)
  • 2021-01-11 14:01

    Just use a regular expression:

    'Add a reference to Microsoft VBScript Regular Expressions 5.5
    Public Function RemoveWhiteSpace(target As String) As String
        With New RegExp
            .Pattern = "\s"
            .MultiLine = True
            .Global = True
            RemoveWhiteSpace = .Replace(target, vbNullString)
        End With
    End Function
    

    Call it like this:

    Sub NoSpaces()
        Dim w As Range
    
        For Each w In Selection.Cells
            w.Value = RemoveWhiteSpace(w.Value)
        Next
    End Sub
    
    0 讨论(0)
  • 2021-01-11 14:02

    Try this:

    Sub NoSpaces()
    Selection.Replace " ", ""
    End Sub
    
    0 讨论(0)
  • 2021-01-11 14:06

    Use "Substitute" Example... =SUBSTITUTE(C1:C18," ","")

    0 讨论(0)
提交回复
热议问题