VBA 合并单元格并设置高度

VBA merging cells and set height

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

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。

我怎样才能让它发挥作用?

如果我将.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