从vba中的字符串的开头和结尾删除空格

时间:2012-09-29 13:08:43

标签: excel vba excel-vba

我已经编写了这个函数来从字符串的开头和结尾删除空格,任何想法为什么它不起作用?

Public Function PrepareString(TextLine As String)

    Do While Left(TextLine, 1) = " " ' Delete any excess spaces
        TextLine = Right(TextLine, Len(TextLine) - 1)
    Loop
    Do While Right(TextLine, 1) = " " ' Delete any excess spaces
        TextLine = Left(TextLine, Len(TextLine) - 1)
    Loop

    PrepareString = TextLine

End Function

3 个答案:

答案 0 :(得分:14)

我测试了你的功能,它在我的机器上工作正常。

您可以使用为您执行此操作的内置Trim()函数,而不是创建执行相同操作的UDF。

Trim(TextLine)

参考:http://www.techonthenet.com/excel/formulas/trim.php

答案 1 :(得分:3)

这个怎么样?请注意使用Worksheetfunction.Trim删除Application.Trim不会删除的多个空格。

Option Explicit

Dim oRegex As Object

Sub test()
Dim dirtyString As String

    dirtyString = "   This*&(*&^% is_                          The&^%&^%><><.,.,.,';';';  String   "
    Debug.Print cleanStr(dirtyString)
End Sub

Function cleanStr(ByVal dirtyString As String) As String

    If oRegex Is Nothing Then Set oRegex = CreateObject("vbscript.regexp")
    With oRegex
        .Global = True
        'Allow A-Z, a-z, 0-9, a space and a hyphen -
        .Pattern = "[^A-Za-z0-9 -]"
        cleanStr = .Replace(dirtyString, vbNullString)
    End With
    cleanStr = WorksheetFunction.Trim(cleanStr)
End Function

答案 2 :(得分:1)

为什么不呢?

Public Function PrepareString(TextLine As String)
    PrepareString = Trim(TextLine)
End Function

Alexandre / slaver113绝对正确,将内置函数包装在UDF中没有任何意义。我之所以做到这一点,是为了指出如何使你的UDF工作。在现实生活中,我永远不会以这种方式使用UDF。 :)