我已经编写了这个函数来从字符串的开头和结尾删除空格,任何想法为什么它不起作用?
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
答案 0 :(得分:14)
我测试了你的功能,它在我的机器上工作正常。
您可以使用为您执行此操作的内置Trim()
函数,而不是创建执行相同操作的UDF。
Trim(TextLine)
答案 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。 :)