自动调整在包装文本的单元格上正确地调整行的大小
先驱:这不是一个复制,有一个类似的问题在这里问,但他们的解决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中的每个单元,其中:
- 在
ma
variables中加载合并区域。 - testing合并区域是以单元的地址开始的。 请注意,选区将多次迭代合并的单元格。 例如,如果单元格
C3
和D3
合并,则select将遍历C3
和D3
。 我们只对第一个合并的单元格感兴趣,我们可以使用Instr
testing。 - 取消这个单元格。
- 自动将行安装到单元格的高度。
- 根据
h
variablestesting高度。 如果更大,则将h
设置为新的高度。 - 使用
ma
variables重新合并单元格。 - 将行高设置为
h
,这是迄今为止最高的高度。