Excel宏:如何扩展ROW高度以适应换行文本?

时间:2010-09-01 14:56:42

标签: excel vba if-statement

我正在慢慢修改和扩展If ... ElseIf ... Else声明(see post),以帮助我格式化一长串的类别和子类别(感谢marg&amp; Lunatik)。< / p>

我已将固定行高分配到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

我可以:

  • 查找超过60个字符(固定列宽度)的targetCells
  • 将.WrapText应用于那些特定的targetCell
  • AutoExpand仅限那些targetCells(因此不会覆盖我的标准10.5pt行以用于其他非异常targetCell)。

这会有用吗?是否需要将其置于单独的SubRoutine中,因为第一个参数?它究竟会是什么样子? (见下面我的尴尬努力)

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我不知道整件事。您是否希望Excel自动将行高调整为文本量?然后你的第三个'例外'应该是

Else: targetCell.WarpText = true