Удалить пробелы слева и справа от текстов или цифр (VBA) - PullRequest
0 голосов
/ 02 апреля 2020

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

Я хотел код VBA, который можно было бы применить к ячейкам с текстами, числами и пробелами удалить пробелы слева и справа от текстов или цифр.

Чтобы исправить это, мне нужно вручную выполнить «ctrl + u» в Word (найти и заменить), но я бы хотел, чтобы эти пробелы были удалены в самом Excel, и для этого я хотел бы использовать код VBA, так как я применяю формулы в каждой ячейке моей таблицы (что здорово), и это даст мне много работы. Формула, которая работает для меня ячейка за ячейкой, такова:

Для чисел:

=TRIM(SUBSTITUTE(A1;CHAR(160);CHAR(32)))*1

Для текстов и пустых ячеек:

=TRIM(SUBSTITUTE(A1;CHAR(160);CHAR(32)))

Я нашел этот код VBA на inte rnet, но это не решает мой случай (что мне показалось интересным, так это то, что он генерирует окно с просьбой выбрать ячейки, в которых будут удалены пробелы). Вот код:

Sub Clear()
Dim rLocal As Range

'Assignment of variables
  Set rLocal = Application.InputBox(Prompt:="Select the cells you want to clear...", Type:=8)

    rLocal.Replace What:=" ", Replacement:=""
End Sub

Я нашел в этом топи c следующий код, который работал для меня, когда я менял "" на "". Но он, кажется, довольно тяжелый и, кажется, делает одну и ту же замену несколько раз. Вот код:

Public Sub RemoveSpaceInString()    
    Dim myCell As Range            
    For Each myCell In Selection
        myCell = Trim(myCell)
        myCell = Replace(myCell, vbTab, "")
        myCell = Replace(myCell, " ", "")
        myCell = Replace(myCell, Chr(160), "")
    Next myCell    
End Sub

Кто-нибудь может мне помочь? Если создать Application.InputBox невозможно, код внесет это изменение для всех электронных таблиц в книге Excel.

Спасибо.

Я жду помощи.

João

1 Ответ

0 голосов
/ 02 апреля 2020
     Public Sub RemoveSpaceInString()
Dim myCell As Range

For I = 1 To ThisWorkbook.Worksheets.Count
ThisWorkbook.Worksheets(I).Activate

Set selrange = Selection

For Each myCell In selrange
    myCell = Trim(myCell)
    myCell = Replace(myCell, vbTab, "")
    myCell = Replace(myCell, Chr(160), "")
Next myCell
Next I

End Sub

Теперь вы можете запускать код при выделении на любом листе.

Если вы хотите запустить код в любом предопределенном диапазоне, вам нужно заменить выделение этим предопределенным диапазоном.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...