这个代码没有保持行高和列宽
时间: 2024-04-12 19:29:07 浏览: 171
pb freeform报表实现英文换行自动行高.zip
非常抱歉,我之前的回答有误。确实,直接复制并粘贴范围不会保留行高和列宽。您可以使用以下代码来实现保持行高和列宽的复制:
```vba
Sub 复制数据()
Dim ws As Worksheet
Dim sourceRange As Range
Dim targetRange As Range
Dim i As Integer
' 设置源工作表和范围
Set ws = ThisWorkbook.Worksheets("Sheet1")
Set sourceRange = ws.Range("A1:N14")
' 设置目标工作表和范围
Set targetRange = ws.Range("A15:N28")
' 复制数据
For i = 1 To 5 ' 这里假设要复制5次
CopyRangeWithFormatting sourceRange, targetRange
Set targetRange = targetRange.Offset(14) ' 下移目标范围的位置
Next i
End Sub
Sub CopyRangeWithFormatting(sourceRange As Range, targetRange As Range)
' 复制数值
sourceRange.Copy
targetRange.PasteSpecial Paste:=xlPasteValues
' 复制行高和列宽
sourceRange.Rows.RowHeight = targetRange.Rows.RowHeight
sourceRange.Columns.ColumnWidth = targetRange.Columns.ColumnWidth
' 清除剪贴板内容
Application.CutCopyMode = False
End Sub
```
在这个示例代码中,我添加了一个名为`CopyRangeWithFormatting`的新子过程,用于复制源范围的数值,并将行高
阅读全文