在Excel VBA中设置多列的列宽
Jeeped和CLR好心地提供了代码,在复制C列的边框和公式的同时,向名为sht02AnalysisSummary的工作表中添加了可变数量的列,该工作表从D列开始在Excel VBA中设置多列的列宽,excel,vba,Excel,Vba,Jeeped和CLR好心地提供了代码,在复制C列的边框和公式的同时,向名为sht02AnalysisSummary的工作表中添加了可变数量的列,该工作表从D列开始 AddCol = txtNrEvaluated With sht02AnalysisSummary Set rangeCopy = .Range(.Cells(3, "C"), .Cells(.Rows.Count, "C").End(xlUp)) rangeCopy.Copy Destination:=.Cells
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列的格式,尽管我已经用带有End with的尝试了EntireClumn.ColumnWidth=15
,甚至它自己的带有End with的,但我没有成功
任何帮助都将不胜感激。在您的问题下面进一步阐述我的意见
只有在跨整个列和nor范围复制时,才会跨列复制列宽。此外,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
屏幕截图
如果要将源选项卡的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
列宽仅在跨整列和nor范围复制时才会跨列复制:)rng.ColumnWidth=15
应该更适合您的情况。。。这应该可以工作.Cells(3,.Columns.Count).End(xlToLeft).Offset(0,1).Resize(rangeCopy.Rows.Count,AddCol).ColumnWidth=15
我确实在开始时尝试了ColumnWdth=15,但它调整了读取AddCol信息的页面上的列宽。然而,我不知道为什么。它给了我一个错误5:无效的过程调用或参数。我正在使用Excel 2010,但不明白这是为什么。我在发布之前测试了代码:)。我假设AddCol=1
它是变量。它通常在2到7的范围内,但如果使用这些值,它也可能达到20%。直到为我工作。请稍等,更新上面答案中的屏幕截图否,我很高兴您的解决方案确定列宽为15。工作表页面必须处理总计不超过9900万英镑(小数点后2位)的数据,因此15的宽度是完美的。啊,我尝试设置了rangePaste,但从未计算出最后一行。我也会记得那个。非常感谢。