自动调整在包装文本的单元格上正确地调整行的大小

先驱:这不是一个复制,有一个类似的问题在这里问,但他们的解决scheme不适合我的问题。 (他们的解决scheme应用于下面的代码中)

我试图让整个行的高度autofit与最大的文本块的单元格。

我的代码(片段):

With my_xl_workbook.Sheets(1).Range(rng) .WrapText = True .Merge .value = DegreesInformationArray(j, i) .Borders.LineStyle = 1 .Borders.Weight = 4 .EntireRow.AutoFit End With 

我的电子表格输出:

在这里输入图像说明

我期望电子表格的输出是:

在这里输入图像说明

我也尝试改变属性设置的顺序,但没有成功。

任何提示,build议,或名称电话是受欢迎的。 🙂

(编辑:插入正确的图像)

这里有一个解决scheme:

 Sub fitheight() Dim h, ma h = 0 For Each c In Selection With c ma = .MergeArea.Address If InStr(ma, .Address) = 1 Then .UnMerge .EntireRow.AutoFit If .Height > h Then h = .Height End If ActiveSheet.Range(ma).Merge .RowHeight = h End If End With Next End Sub 

怎么运行的

该过程假定您基于select自动设置高度。 它可以很容易地适应在一个范围内操作。

它使用两个variables:

  • h保持最大高度
  • ma来保存每个单元格合并区域的范围

它遍历select中的每个单元,其中:

  1. mavariables中加载合并区域。
  2. testing合并区域是以单元的地址开始的。 请注意,选区将多次迭代合并的单元格。 例如,如果单元格C3D3合并,则select将遍历C3D3 。 我们只对第一个合并的单元格感兴趣,我们可以使用Instrtesting。
  3. 取消这个单元格。
  4. 自动将行安装到单元格的高度。
  5. 根据hvariablestesting高度。 如果更大,则将h设置为新的高度。
  6. 使用mavariables重新合并单元格。
  7. 将行高设置为h ,这是迄今为止最高的高度。