4

У меня есть этот отчет, и я хочу увеличить отступ по вертикали для удобства чтения.

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

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

То, что я хочу сделать, это увеличить высоту строк группы ячеек на определенное значение. Вместо того, чтобы просто изменить его на указанное значение. то есть.

rowheight = rowheight + X

Не

rowheight = X


Вы можете сделать это в Excel? Нужно ли будет VBA?

4 ответа4

6

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

  1. Вставьте столбец куда-нибудь - вероятно, столбец А. Выберите весь столбец.
  2. Дайте ему верхние / нижние границы самого толстого вида - полоска твердого жира - примените / ок.
  3. Выберите все другие столбцы, которые вы хотите дополнить. Вертикально отцентрируйте их.
  4. Скройте заштрихованный столбец и сохраните.

Это дает вам верхний и нижний отступы примерно в 3 единицы /5 пикселей сверху и снизу. С arial достаточно, чтобы верхушки и хвосты не касались краев клетки.

Предоставленный код VBA хорош. Но он терпит неудачу, как только ваша электронная таблица просматривается кем-то, кому нужно сузить некоторые столбцы и поэтому удаляет ручное форматирование или применяет их самостоятельно. Если пользователь знает, что он делает, он нажмет Ctrl + A и дважды щелкнет индикатор строки, чтобы автоматически увеличить высоту всех строк.

Использование границ обеспечивает решение, которое всегда будет работать независимо, если только оно не отформатировано вручную.

2

Я бы пошел для кода ниже ... не уверен, что будет ли способ применить его для всех строк один раз. Я был бы рад (и upvote), если кто-то здесь знает :)

Sub fixRowHeight()

Dim oRange As Excel.Range
Dim oRow As Excel.Range
Dim dblFactor As Double

Set oRange = Sheets(1).Range("A1:B25")
dblFactor = 5

For Each oRow In oRange.Rows

    oRow.RowHeight = oRow.RowHeight + dblFactor

Next oRow

End Sub
1

Чтобы разъяснить ответ от Tiago Cardoso, я добавил условие, чтобы убедиться, что максимальная высота строки не превышается при увеличении высоты строки с помощью переменной resize factor.

Sub FixRowHeight()
    Dim oRange As Excel.Range
    Dim oRow As Excel.Range
    Dim dblFactor As Double

    Set oRange = Sheets(1).Range("A1:O367")
    dblFactor = 12

    For Each oRow In oRange.Rows
        If oRow.RowHeight + dblFactor <= 409.5 Then
            oRow.RowHeight = oRow.RowHeight + dblFactor
        Else
            oRow.RowHeight = 409.5
        End If
    Next oRow
End Sub
0

Вот макрос, который поможет вам.

Сначала он устанавливает вертикальное выравнивание для каждой ячейки по Center .

Затем он берет текущую высоту каждой ячейки и добавляет к ней 7,5 (это эквивалентно 10 пикселям). В конце он добавляет 5-пиксельный отступ к верхней и нижней части ячейки. Просто настройте это значение в соответствии с вашими предпочтениями.

Sub PadCells()

Set cr = Selection

For Each cr In cr.Rows
    newHeight = cr.RowHeight + 7.5 
    cr.VerticalAlignment = xlCenter
    cr.RowHeight = newHeight
Next cr

End Sub

Использовать:

  1. Выберите ячейки, для которых вы хотите отрегулировать высоту.
  2. Запустите макрос.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .