Макрос Excel: как увеличить высоту строки для размещения текста переноса? - PullRequest
1 голос
/ 01 сентября 2010

Я медленно поправляю и расширяю выражение If ... ElseIf ... Else ( см. Сообщение ), чтобы помочь мне отформатировать длинный список категорий и подкатегорий (спасибо marg & Lunatik) .

Я назначил фиксированную высоту строки для 90% диапазона / линий. Теперь я застрял в тех ячейках с большим количеством текста, заключенным в две строки в ячейке. Две строки текста не вписываются в мою стандартную высоту 10,5.

Я не могу просто обновить экран, так как оператор говорит, что любая строка, которая не является исключением первого (жирный шрифт) или исключением второго (верхний индекс) , должна быть 10,5 пункта Мне нужно третье исключение . В настоящее время у меня есть:

Sub setHeights()
Dim targetRange As Range
Dim targetCell As Range


Cells.Select
Selection.WrapText = True
Cells.EntireRow.AutoFit
Set targetRange = Range("B:B")
For Each targetCell In targetRange
    If Not IsEmpty(targetCell) Then
        If targetCell.Font.Bold Then
            targetCell.RowHeight = 15
        ElseIf targetCell.Characters(Len(targetCell), 1).Font.superscript Then
            targetCell.RowHeight = 14
        Else: targetCell.RowHeight = 10.5
        End If
    End If
Next targetCell
End Sub

Могу ли я:

  • Найти эти targetCells с более чем 60 символами (ширина фиксированного столбца)
  • Применить .WrapText к этим конкретным целевым ячейкам
  • Автоэкспандировать ТОЛЬКО те targetCells (поэтому не перезаписывают мои стандартные строки 10.5pt для других целевых ячеек без исключения).

Будет ли это работать? Нужно ли его помещать в отдельную подпрограмму из-за параметров первой? На что это похоже? (см. мое смущающее усилие ниже)

ElseIf targetCell.Characters(Len(TargetCell+60).TargetCell.WrapText Then
       targetCell.Autofit

Ответы [ 2 ]

1 голос
/ 03 сентября 2010

Это похоже на работу.

Sub setHeights()
    Dim targetRange As Range
    Dim targetCell As Range

    Set targetRange = Range("B:B")
    For Each targetCell In targetRange.Cells
        If Not IsEmpty(targetCell.Value) Then
            If targetCell.Font.Bold Then
                targetCell.RowHeight = 15
            ElseIf targetCell.Characters(Len(targetCell), 1).Font.Superscript Then
                targetCell.RowHeight = 14
            ElseIf Len(targetCell.Value) > 10 Then
                targetCell.WrapText = True
                targetCell.EntireRow.AutoFit
            Else: targetCell.RowHeight = 10.5
            End If
        End If
    Next targetCell
End Sub
0 голосов
/ 02 сентября 2010

Я не понимаю всего этого. Вы хотите, чтобы Excel автоматически настраивал высоту строки в соответствии с объемом текста? Тогда ваше третье «исключение» должно быть

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