VBA粘贴怎样包括列宽和行高

For i = 2 To Sheets.Count - 1 '从第一个工作表到倒数第二个工作表
With Sheets(i)
n = .[c65536].End(xlUp).Row '分别求出最大行号
.Range("a2:F" & n).Copy ActiveSheet.[c65536].End(xlUp).Offset(1, -2) '取a2开始到最后的数据copy到新表数据的下一行。
End With
怎么改才能包括列宽和行高呢

按照基本操作里面的方法,如果粘贴后要保持原来的行高和列宽,应该是整行复制粘贴以保持行高,然后再来一次选择性粘贴 ,选择列宽以保持原有列宽。
在vba里面应该也是这么个思路,整行复制粘贴,.entirerow.copy ,完了再来一次pastespecial paste:=xlpastecolumnwidths追问

那能不能整体复制完再重新设置整体列宽呢?

追答

那没必要吧,做两次粘贴不就可以保持行高列宽了吗。复制完了再来调整行高列宽,这些行的行高和列宽都相同吗,不同的话还要用两次for循环一个一个来

追问

能帮忙把上面代码改一下吗 还是没明白

追答

For i = 2 To Sheets.Count - 1 '从第一个工作表到倒数第二个工作表
With Sheets(i)
n = .[c65536].End(xlUp).Row '分别求出最大行号
.Range("a2:F" & n).entirerow.Copy ActiveSheet.[c65536].End(xlUp).Offset(1, -2) '取a2开始到最后的数据copy到新表数据的下一行。此处加了个entirerow ,就是整行复制粘贴,这是为了保持行高不变
.Range("a2:F" & n).copy '再复制一次
ActiveSheet.[c65536].End(xlUp).Offset(1, -2).pastespecial paste:=xlpastecolumnwidths '这次进行选择性粘贴,只粘贴列宽,以使列宽一致
End With
next i

温馨提示:答案为网友推荐,仅供参考
相似回答