Нахождение новой строки в ячейке - PullRequest
1 голос
/ 26 февраля 2020

На данный момент у меня есть файл, в котором перечислены различные элементы и которые дают им букву или цифру, и я хочу немного переместить элементы с буквой вправо, чтобы можно было легко увидеть, что это отличается тип элемента от элемента с буквой.

Пока у меня есть код, который помещает 5 пустых мест в начале для элементов с буквой, и моя проблема заключается в том, что, когда это длинный текст, который занимает до более чем 1 строки он не может распознать, что существует более 1 строки, и добавить к ним пустые места.

Кроме того, у меня есть код, который распознает, когда есть новая строка, но только если при создании был использован ввод текст для ячейки, это не работает для длинного текста, где он занимает более 1 строки в ячейке, и ввод не использовался

Код:

Sub Module_1()

For i = 5 To 8

ValueCell = Cells(i, 3).Value
Cells(i, 3).Value = "     " & ValueCell
Cells(i, 3).Replace What:=vbLf, Replacement:=vbLf & "     ", LookAt:=xlPart

Next i
End Sub

Пример:

Это элементы, к которым не применяется код
This is the items without the code being applied to it

Это элементы с примененным к ним кодом
These are the items with the code applied to them

Как вы можете видеть, он работает, но в C5 и C7 нет лишних строк, он также работает для C8, так как enter использовался для создания текста в этой ячейке, но не работает для C6

Мне было интересно, есть ли что-то вроде vbLf, но для распознавания новой строки внутри ячейки, когда это длинный текст, или есть ли способ сделать это, просто добавив вкладку или что-то сразу ко всем строкам

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

1 Ответ

3 голосов
/ 26 февраля 2020

Нет л oop необходимо. Просто установите .IndentLevel = 1 для этого диапазона сразу

Sub Module_1()
    With Range(Cells(5, 3), Cells(8, 3))
        .HorizontalAlignment = xlLeft
        .WrapText = True
        .IndentLevel = 1
    End With
End Sub

Я применил это к Range("B5:C8"), и оно автоматически выглядит так:

enter image description here


В качестве альтернативы сделайте это без VBA:

Выберите ячейки ›Щелкните правой кнопкой мыши› Формат ячеек ›Выравнивание› Отступ (извините за скриншот на немецком языке).

enter image description here

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