如何使用VBA将整个工作表内容以静态值复制到另一工作表
复制整张工作表静态值的VBA方案
你可以通过以下两种方式实现无需指定固定范围,动态复制整张工作表的所有静态值(移除公式,仅保留计算结果):
方法1:直接赋值(高效简洁)
利用UsedRange自动识别工作表中所有已使用的单元格范围,直接将值赋值到目标表:
Public Sub CopyEntireSheetValues() Dim sourceSheet As Worksheet Dim targetSheet As Worksheet ' 定义源表和目标表 Set sourceSheet = ThisWorkbook.Sheets("MAIN") Set targetSheet = ThisWorkbook.Sheets("Static Data") ' 动态复制所有已使用单元格的值 targetSheet.Range(sourceSheet.UsedRange.Address).Value = sourceSheet.UsedRange.Value End Sub
- 优势:执行速度快,无需依赖剪贴板
- 说明:
UsedRange会自动覆盖所有包含数据、公式或格式的单元格,无需手动修改范围地址
方法2:复制粘贴为值(支持格式保留)
如果需要保留源表的格式(如数字格式、单元格样式),可以用Copy+PasteSpecial仅粘贴值:
Public Sub CopySheetAsValues() Dim sourceSheet As Worksheet Dim targetSheet As Worksheet Set sourceSheet = ThisWorkbook.Sheets("MAIN") Set targetSheet = ThisWorkbook.Sheets("Static Data") ' 可选:清空目标表原有内容 targetSheet.Cells.Clear ' 复制源表全部内容,粘贴为值到目标表起始位置 sourceSheet.Cells.Copy targetSheet.Range("A1").PasteSpecial Paste:=xlPasteValues ' 若需要保留数字格式,可替换为: ' targetSheet.Range("A1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats ' 清除剪贴板,避免弹窗提示 Application.CutCopyMode = False End Sub
- 优势:灵活控制粘贴内容(值、格式、公式等),适合需要保留格式的场景
- 说明:
sourceSheet.Cells代表整张工作表的所有单元格,无需指定具体范围
内容的提问来源于stack exchange,提问作者daniel stafford
相关产品推荐
相关产品推荐

