2010-09-01 2 views
1

Я медленно корректирую и расширяю If If ... ElseIf ... Else statement (see post), чтобы помочь мне форматировать длинный список категорий и подкатегорий (спасибо marg & Lunatik).Excel Macro: как увеличить высоту ROW, чтобы разместить текст обтекания?

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

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

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
  • AutoExpand ТОЛЬКО эти targetCells (поэтому не переписывают мои стандартные строки 10.5pt для других нецелевых целевыхЦеллов).

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

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

ответ

1

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

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

Как шарм. Большое спасибо за это. Это спасло меня так много времени. – RocketGoal

0

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

Else: targetCell.WarpText = true 
+0

Поскольку я назначил определенную высоту 10.5 .WrapText, похоже, не работает (я пробовал). Мне нужно .AutoUpdate для линий для расширения, а затем конкретные строки 10.5, к сожалению, меняют высоту. Решение состоит в том, чтобы удалить 10.5, но включить смелые и надстрочные исключения. Мне нужно задать boxx, если я смогу удалить 10.5 и использовать автоматический размер. – RocketGoal

Смежные вопросы