Доступ к VBA, чтобы обрезать пространство вокруг определенного символа или слов в столбце - PullRequest
1 голос
/ 20 декабря 2011

У меня есть этот фрагмент кода, который первоначально использует функцию замены (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

Я изменил функцию с Заменить на Обрезать, но я делаю это неправильно.

Спасибо всем!

Guy

Ответы [ 2 ]

2 голосов
/ 20 декабря 2011

Просто чтобы добавить к ответу Джесси.Вместо того, чтобы делать так много замен, вы можете просто сделать следующее (со ссылкой на 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 удаляет все пробелы в начале и конце, а также все двойные / тройные / и т.д. пробелы в строке.Использование vbTextCompare в функции замены сделает так, что не имеет значения, что такое «th», так что вам не нужно беспокоиться, если это «TH», «tH» или «Th» и т. Д.

1 голос
/ 20 декабря 2011

Trim удаляет только начальные и конечные пробелы в начале и конце вашей строки.Простыми решениями будут:

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

Это позволит убрать пробелы до восьми пробелов.Если в ваших данных есть действительные символы табуляции, а не пробелы, вам нужно заменить "" на 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...