访问VBA以修剪列中特定字符或单词周围的空间

时间:2011-12-20 05:29:15

标签: sql ms-access vba

我有这段代码最初使用替换功能(VBA)来替换MS Access中字符串或列字段中的某些字符。代码在一个模块中。

我需要修改代码,以便修剪某些字符周围的空间。例如,如果单独出现 th ,请从左侧修剪空格,以便与数字冲刷。如果右侧有多个制表符(空格),请对其进行修剪,使右侧只有一个制表符空格。对于 avenue 也是如此,修剪它以使左侧和右侧有一个标签空间。

这是我写的:

Public Function TrmSpace(RemoveSpace As String) As String
Dim UserEntry As Variant, CorrectedEntry As Variant
Dim i As Long
ExpectedEntry = Array("th ", " th", " th ", "TH")

CorrectedEntry = Array("th", "th", "th", "th")
TrmSpace = RemoveSpace
For i = 0 To 3
    TrmSpace = Trim(TrmSpace, ExpectedEntry(i), CorrectedEntry(i), Compare:=vbTextCompare)
Next
End Function

我将功能从Replace更改为Trim,但我做错了。

谢谢大家!

2 个答案:

答案 0 :(得分:2)

只是为了补充Jesse的答案。您可以简单地执行以下操作(参考Excel),而不是进行如此多的替换:

Public Function TrmSpace(RemoveSpace As String) As String

  RemoveSpace = Excel.Application.WorksheetFunction.Trim(RemoveSpace)
  RemoveSpace = Replace(RemoveSpace," th","th",,,vbTextCompare)

  TrmSpace = RemoveSpace

End Function

函数Trim Trim不同。 Trim删除了开头和结尾处的所有空格以及字符串中的任何double / triple / etc空格。在你的替换函数中使用vbTextCompare会使它与“th”的混合无关紧要,所以你不必担心它是“TH”,“tH”还是“Th”,等

答案 1 :(得分:1)

修剪仅从字符串的开头和结尾删除前导和尾随空格。一个简单的解决方案是:

Public Function TrmSpace(RemoveSpace As String) As String

RemoveSpace = Replace(RemoveSpace, "    ", " ")
RemoveSpace = Replace(RemoveSpace, "   ", " ")
RemoveSpace = Replace(RemoveSpace, "  ", " ")
RemoveSpace = Replace(RemoveSpace, " th", "th")
RemoveSpace = Replace(RemoveSpace, " TH", "th")

TrmSpace = RemoveSpace
End Function

这样可以消除最多8个空格的间隙。如果您的数据有实际的制表符而不是空格,则需要用vbTab&替换“”。 vbTab& vbTab& vbTab。


一行代码可以将任意数量的重复空格“挤压”到一个空格,另一行代码可以移除th的前导空格,无论如何,从而减少了上述内容:

Public Function TrmSpace(RemoveSpace As String) As String
  TrmSpace = Replace$(Replace$(Replace$(RemoveSpace, Chr$(32), Chr$(32) & Chr$(22)), _
                   Chr$(22) & Chr$(32), vbNullString), Chr$(22), vbNullString)

  TrmSpace = Replace$(TrmSpace, " th", "th", , , vbTextCompare)
End Function