2010-09-01 62 views
1

我正在慢慢修改和擴展If ... ElseIf ... Else語句(see post)來幫助我格式化一長串類別和子類別(感謝文件LLunatik)。Excel宏:如何擴展行高以適應包裝文本?

我已將固定行高分配給範圍/線條的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 

能I:

  • 查找那些targetCells有超過60個字符(固定柱的寬度)
  • 應用.WrapText於那些特定targetCells
  • 自動擴展只有那些targetCells(因此不會覆蓋我的標準10.5pt行,用於其他非異常targetCells)。

這項工作?它是否需要放置在單獨的子例程中,因爲第一個參數是?它看起來像什麼? (看到我下面的尷尬努力)

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 2010-09-03 11:59:15

0

我不明白這一切。你是否希望Excel自動調整行高以達到文本的數量?那麼你的第三個'例外'應該是

Else: targetCell.WarpText = true 
+0

因爲我已經分配了10.5的特定高度.WrapText似乎不工作(我試過了)。我需要.AutoUpdate來擴展線條,然後不幸的是10.5的特定線條會改變高度。解決辦法是刪除10.5,但包括粗體和上標例外。我需要詢問boxx是否可以刪除10.5並使用自動大小。 – RocketGoal 2010-09-02 13:44:52