Выделите ячейки с пробелами до и после значений - PullRequest
1 голос
/ 09 ноября 2019

Я создал небольшой макрос для выделения ячеек с более чем одним пробелом в именах. Теперь я заметил, что есть также значения с пробелом перед именем и после. Как отредактировать мой текущий код, чтобы он выделил ячейки, такие как «Слово слово» или «Слово слово» или «Слово слово»

Так что единственный, который пройдет проверку, - это случай, когда все правильно написано как«Слово слово»

Вот мой текущий код:

Sub MarkMoreThanOneSpace()

Dim Cell
Dim rng As Range

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

    Set rng = ThisWorkbook.Worksheets("Main").Range("A2:L" & ThisWorkbook.Worksheets("Main").Range("A2").End(xlDown).Row)

    For Each Cell In rng
    If WorksheetFunction.CountIf(Cell, "*  *") > 0 Then

        Cell.Interior.ColorIndex = 6

    Exit Sub
    End

    End If

    Next Cell

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

End Sub

Ответы [ 2 ]

1 голос
/ 09 ноября 2019

вы можете использовать WorksheetFunction.Trim() функцию

, проходя через ячейки со значениями только для сокращения времени

не выходите при первом обнаружении, иначе вы пропустите все остальные

и не используйте End!

Sub MarkMoreThanOneSpace()

    Dim cell As Range
    Dim rng As Range

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    Set rng = ThisWorkbook.Worksheets("Main").Range("A2:L" & ThisWorkbook.Worksheets("Main").Range("A2").End(xlDown).Row)

    For Each cell In rng.SpecialCells(xlCellTypeConstants)
        If WorksheetFunction.Trim(cell.Value) <> cell.Value Then cell.Interior.ColorIndex = 6
    Next

    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic

End Sub
1 голос
/ 09 ноября 2019

Это должно работать. Кроме того, вы можете попробовать Regex, но это может быть излишним.

If WorksheetFunction.CountIf(Cell.Value, "*  *") > 0 _
    Or Left$(Cell.Value,1) = " " _
    Or Right$(cell.Value,1) = " " Then

Кроме того, вы можете полностью избавиться от VBA и поместить эти формулы в правила условного форматирования.

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