在Excel VBA中为多个列设置列宽

时间:2017-06-26 13:55:36

标签: excel-vba vba excel

Jeeped和CLR友好地提供了代码,该代码在名为 sht02AnalysisSummary 的工作表中添加了可变数量的列,从D列开始,同时复制C列的边框和公式。

AddCol = txtNrEvaluated

With sht02AnalysisSummary
    Set rangeCopy = .Range(.Cells(3, "C"), .Cells(.Rows.Count, "C").End(xlUp))
    rangeCopy.Copy Destination:=.Cells(3, .Columns.Count).End(xlToLeft).Offset(0, 1).Resize(rangeCopy.Rows.Count, AddCol)
End With

但是,此代码不会在宽度方面复制C列的格式,虽然我已经使用EntireColumn.ColumnWidth = 15进行了With End With的测试,甚至尝试了自己的With End With,但我有没有成功。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

在我的问题下面扩展我的评论。

只有在整个列和范围内进行复制时,才会复制列宽。 rng.ColumnWidth = 15也应该有效

这是你在尝试的吗?

Dim rangeCopy As Range, destRng As Range

AddCol = 2

With sht02AnalysisSummary
    Set rangeCopy = .Range(.Cells(3, "C"), .Cells(.Rows.Count, "C").End(xlUp))
    Set destRng = .Cells(3, .Columns.Count).End(xlToLeft).Offset(0, 1).Resize(rangeCopy.Rows.Count, AddCol)
    rangeCopy.Copy destRng
    destRng.ColumnWidth = 15
End With

<强>截图

enter image description here

答案 1 :(得分:0)

如果要将源标签的C列宽度复制到新列,可以使用:

Dim rangeCopy As Range, rangePaste As Range
Dim Addcol As Integer

Addcol = NrEvaluated

With sht02AnalysisSummary

    Set rangeCopy = .Range(.Cells(3, "C"), .Cells(.Rows.Count, "C").End(xlUp))
    Set rangePaste = .Cells(3, .Columns.Count).End(xlToLeft).Offset(0, 1).Resize(rangeCopy.Rows.Count, Addcol)

    rangeCopy.Copy Destination:=rangePaste
    rangePaste.EntireColumn.ColumnWidth = rangeCopy.EntireColumn.ColumnWidth

End With