【问题标题】:How can I adjust the row height of merged cells using a macro in vba excel?如何使用 vba excel 中的宏调整合并单元格的行高?
【发布时间】:2017-07-15 16:22:34
【问题描述】:

我制作了一张 Excel 表格,用作调查问卷。为了允许广泛的答案和调整设计,我合并了单元格。我现在遇到的问题是行高没有自动调整。因此,我编写了一个简短的宏来解决这个问题。但是,此宏仅适用于单个单元格,不适用于合并的单元格。因此,我想知道如何解决这个问题。如何在 vba excel 中使用宏调整合并单元格的行高?

感谢您的帮助!

【问题讨论】:

  • 您只需调整合并单元组中最后一行的高度,例如如果 A1:A3 被合并: Rows("3:3").RowHeight = 33
  • 您是否希望将所有合并行的高度调整为相同的数量? ...您还可以在合并的行中插入行
  • 合并单元格是个坏主意(恕我直言,Excel 最糟糕的功能之一)。我只建议将它们作为可打印报告表的最后润色 - 不会添加或转换更多数据。为什么不改用 Text Wrap 和 Row.Autofit。您可以通过先设置列宽然后使用 VBA 自动调整来获得您的设计。

标签: excel vba


【解决方案1】:

与往常一样,如果您发布宏会很有帮助,但我猜您正在尝试使用.entirerow.autofit 命令?如果是这样,我不相信这个函数会评估合并的单元格。 (如果我错了,请纠正我!)

您可能需要考虑使用“跨范围居中”而不是合并单元格。或者您可能想要创建一个规则来循环遍历单元格以检查字符长度,或者是否输入了“输入键”CHR(10),以及基于此的大小。示例:

        Sub TestEachCl()
        Dim CL As Range

        'Make sure to include the intersect with usedrange, 
        'otherwise this will take much longer than necessary.
        For Each CL In Intersect(Rows(20), ActiveSheet.UsedRange).Cells

        If InStr(1, CL.Formula, Chr(10)) > 0 Then
        'enter key exists in a cell
        CL.EntireRow.Height = 30
        'probably want to close the loop or have it not do 
        'anything else once it has reached max height, 
        'so it doesn't reduce the size

        End If

        Next CL

        End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-10
    • 2013-08-10
    相关资源
    最近更新 更多