Как я могу удалить разрывы строк из ячейки, но сохранить формат адреса в той же ячейке VBA - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь удалить разрывы строк:

(Blank line break)
Test Company
1640 Test Avenue,
New York, NY 10035
(000)123-456    
(Blank line break)

Я хочу удалить две строки, в которых есть разрывы строк.Я пытался использовать поиск и замену, чтобы заменить разрывы строк альтернативным кодом 0010, но он создает длинную строку.

Я хочу закончить с этим:

Test Company
1640 Test Avenue,
New York, NY 10035
(000)123-456  

Любая помощь будетоценили.

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Вот UDF, который работает аналогично функции TRIM на листе, но позволяет указать символ для обрезки:

Option Explicit
Function trimCHAR(ByVal S As String, char As String)
  Dim RE As Object
  Dim I As Long

Set RE = CreateObject("vbscript.regexp")
With RE
    .Global = True
    .MultiLine = True

'need to do separately, otherwise multiple chars within will
'be removed
        .Pattern = char & "$"
        S = .Replace(S, "") 'Remove extra chars within or at end of string
        .Pattern = "^" & char
        S = .Replace(S, "") 'Remove extra chars at start of string
End With
trimCHAR = S
End Function

В вашей ситуации вы можете использовать его следующим образом:

=trimCHAR(cell_ref,CHAR(10))

ИЛИ вы можете использовать его как часть макроса, который повторяет все обрабатываемые ячейки.

Идея для этого возникла из функции Text.Trim Power Query, которая работает только в начале и в концестроки, но позволяет указать любую символьную строку;наряду с адаптацией этого Кен Пульс , который добавляет функцию TRIM функции рабочего листа, заменяя последовательные "символы" в строке только одним.

0 голосов
/ 11 октября 2018

как то так

Dim v
v = Trim(cell.Value)
if left(v,1)=vblf then v = right(v, len(v)-1)  'remove leading break
if right(v,1)=vblf then v = left(v, len(v)-1)  'remove trailingbreak
v = replace(v, vbLf & vbLf, vbLf)              'remove blank lines
cell.value=v
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...