Excel 2010 中合并单元格的自动调整高度

Excel 2010 中合并单元格的自动调整高度

我们有一张 Excel 工作表,上面有各种合并和非合并单元格,因此它看起来就像纸质表格一样。底部是一些单元格,它们在整个页面上合并在一起,因为它们可以包含大量数据。但是,如果有人写的内容超出单元格宽度,它会换行但不显示文本(这些单元格启用了换行功能)。即使您双击单元格之间的线(就像您自动调整高度一样),它也会保持在一行的高度。我可以手动调整高度,但由于我们通常锁定工作表,因此用户无法这样做。

有没有办法让它在合并单元格上自动调整?最好是设置,但 VBA 也可以。我试过类似的代码,Cells.EntireRow.AutoFit但仍然只能调整到一行高。

答案1

这是 Contextures 博客文章,标题很开心“自动调整合并单元格行高”

我建议您阅读整个帖子,但这里是代码:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim MergeWidth As Single
Dim cM As Range
Dim AutoFitRng As Range
Dim CWidth As Double
Dim NewRowHt As Double
Dim str01 As String
str01 = "OrderNote"
  If Not Intersect(Target, Range(str01)) Is Nothing Then
    Application.ScreenUpdating = False
    On Error Resume Next
    Set AutoFitRng = Range(Range(str01).MergeArea.Address)

    With AutoFitRng
      .MergeCells = False
      CWidth = .Cells(1).ColumnWidth
      MergeWidth = 0
      For Each cM In AutoFitRng
          cM.WrapText = True
          MergeWidth = cM.ColumnWidth + MergeWidth
      Next
      'small adjustment to temporary width
      MergeWidth = MergeWidth + AutoFitRng.Cells.Count * 0.66
      .Cells(1).ColumnWidth = MergeWidth
      .EntireRow.AutoFit
      NewRowHt = .RowHeight
      .Cells(1).ColumnWidth = CWidth
      .MergeCells = True
      .RowHeight = NewRowHt
    End With
    Application.ScreenUpdating = True
  End If

End Sub

答案2

我制作了一个插件,可以自动调整多个合并单元格的行高。如果您需要自动调整行高,请使用它。[发布 Ver2.6 · toowaki/AutoFitRowEx · GitHub] https://github.com/toowaki/AutoFitRowEx/releases/tag/2.6.2

相关内容