2

У меня есть таблица из одного столбца и более 200 строк. Я хочу отрегулировать высоту этих строк в зависимости от их содержимого.

Например, если ячейка содержит менее 10 символов, тогда строка должна иметь длину 25 пикселей, а если она содержит больше или равно 10 символам, строка должна иметь длину 50 пикселей.

Эти фотографии могут объяснить, что я хочу сделать:

до

в

после

2 ответа2

1

Это основано на вашем неясном вопросе! Я также разместил динамический вариант

Option Explicit
Sub ChangeRowsColsInPixels()
  Dim r As Range

  For Each r In ActiveSheet.UsedRange

    Dim length As Integer
    length = Len(r.Value)
    If length > 0 Then
        If length < 10 Then     
            r.RowHeight = 25
        End If

        If length >= 10 Then
            r.RowHeight = 50
        End If
    End If

  Next r

End Sub

Как добавить VBA в MS Office?

Вы не спрашивали о выравнивании текста внутри ячейки, но так как вы можете middle align я полагаю, этого достаточно

Вы также не хотите предпринимать никаких действий, если количество символов от 10 до 20

До

После

И со средним выравниванием

0

Как второе решение моего другого поста, это предложит более динамичный подход, в котором высота будет обновляться в зависимости от количества символов (это не было должным образом проверено для верхних пределов / максимумов и так с большой длинной строкой). / value, скорее всего, возникнет исключение, поэтому я добавил жестко заданный лимит, который в Excel 2010 приближается к пределу)

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim r As Range
  Dim defaultHeight As Integer
  defaultHeight = 25

  Dim maxHeight As Integer
  maxHeight = 399

  For Each r In ActiveSheet.UsedRange

    Dim length As Integer
    length = Len(r.Value)
    If length > 0 Then
        Dim heightToUse As Double
        heightToUse = defaultHeight + length
        If (heightToUse > maxHeight) Then
            r.RowHeight = maxHeight
        Else
            r.RowHeight = heightToUse
        End If
    End If

  Next r

End Sub

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

Как добавить VBA в MS Office?

До

После (со Middle Align на вкладке выравнивания ленты)

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