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