【问题标题】:VBA merging cells and set heightVBA合并单元格并设置高度
【发布时间】:2021-02-28 09:01:32
【问题描述】:

在我的电子表格中,我尝试水平合并两列中的单元格。合并它们后,我希望它们的总宽度与之前的一列相同。

For i = 16 To 25
With ThisWorkbook.Worksheets(week_sheet_name)
    .Rows(i).AutoFit
    h = ThisWorkbook.Worksheets(week_sheet_name).Rows(i).RowHeight
    .Range("V" & i & ":W" & i).MergeCells = True
    .Columns(22).ColumnWidth = 40
    .Columns(23).ColumnWidth = 30
    .Rows(i).EntireRow.RowHeight = h
End With
Next

在这个循环中,它将行自动调整到完美高度(循环前第 22 列的列宽为 70),之后我将高度保存在变量 h 中并合并第 i 行的单元格 V 和 W。列宽设置为 40 和 30,总和与之前的一列相同。最后一步是应用之前自动调整的行的高度。例如。在一个单元格中,自动调整使其高度为 144,在 makro 之后为 264,这与我自动调整它的数量相同,但单元格宽度仅为 40。

如果我只为一行(没有 for 循环)执行此操作,它会完美运行。 如果我不更改第 22 列的列宽,它也适用于循环,但我需要宽度为 40。

我怎样才能让它工作?

【问题讨论】:

    标签: excel vba row-height


    【解决方案1】:

    如果我将.Columns(22).ColumnWidth = 40.Columns(23).ColumnWidth = 30 移出循环,它就可以工作。我现在的代码是

    For i = 16 To 25
    With ThisWorkbook.Worksheets(week_sheet_name)
        .Rows(i).AutoFit
        h = ThisWorkbook.Worksheets(week_sheet_name).Rows(i).RowHeight
        .Range("V" & i & ":W" & i).MergeCells = True
        .Rows(i).EntireRow.RowHeight = h
    End With
    Next
    ThisWorkbook.Worksheets(week_sheet_name).Columns(22).ColumnWidth = 40
    ThisWorkbook.Worksheets(week_sheet_name).Columns(23).ColumnWidth = 30
    

    【讨论】:

      猜你喜欢
      • 2020-12-30
      • 1970-01-01
      • 2021-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-23
      • 2016-04-27
      相关资源
      最近更新 更多