第二次尝试打印时出现 运行 时间错误 '1004' 粘贴范围 class 的特殊方法失败
Second time I try to print I get run time error '1004' paste special method of range class failed
我使用为数据 sheet 上的每个寄存器保存的数据自动化了一个寄存器,这些数据通过 VBA 馈送到 'print out' sheet.
第一个 运行 有效。当我 select 另一个我得到
'run time error '1004' paste special method of range class failed'
如果我清除错误,它会工作一次,然后在第二次尝试时失败。
阅读 MS 帮助(我现在找不到)它说类似范围的引用不正确,因此在程序完成之前无法使用。我试着确保 cutcopymode 是假的。我尝试添加一个额外的副本。 PS 值在 sheet 上使用不同的单元格,最后尝试保存 sheet 以查看是否清除了引用。
我有两个版本,一个版本已记录,另一个版本试图引用所有范围(均已附上)。该宏来自已经 select 编辑了数据 sheet
的宏
Sub POP_PRINT_OUT()
'
' Populate Print Out Sheet with Data from Route Sheet
Application.ScreenUpdating = False
ActiveSheet.Unprotect
Range("A80:L135").Select
Selection.Copy
Sheets("Print Out").Select
ActiveSheet.Unprotect
Sheets("Print Out").Range("A19").Select '# 1004 Error with P.S values below #
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("A14").Select
Application.CutCopyMode = False
'ActiveWorkbook.Save
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
Sub POP_PRINT_OUTxxxx()
'
' Populate Print Out Sheet with Data from Route Sheet
Dim sh As Worksheet
Dim rng1 As Range
Dim rng2 As Range
Set wb = ThisWorkbook
Set sh = wb.Sheets("Print Out")
Set rng1 = ActiveSheet.Range("A80:L135")
Set rng2 = sh.Range("A19:L74")
Application.ScreenUpdating = False
ActiveSheet.Unprotect
rng1.Select
Selection.Copy
sh.Select
ActiveSheet.Unprotect
rng2.Select '# 1004 Error with P.S values below #
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("A14").Select
Application.CutCopyMode = False
'ActiveWorkbook.Save
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
sheet 的解除保护似乎导致了问题。
但 avoid using Select.
总是一个好主意
考虑这个简化版本,更改您需要的内容,看看它是否更好。
...
Set rng2 = sh.Range("A19:L74")
sh.Unprotect
rng1.Copy
rng2.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
sh.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
end sub
如果在复制和粘贴之间移动 sh.Unprotect
,您会再次看到错误 returns。
我使用为数据 sheet 上的每个寄存器保存的数据自动化了一个寄存器,这些数据通过 VBA 馈送到 'print out' sheet.
第一个 运行 有效。当我 select 另一个我得到
'run time error '1004' paste special method of range class failed'
如果我清除错误,它会工作一次,然后在第二次尝试时失败。
阅读 MS 帮助(我现在找不到)它说类似范围的引用不正确,因此在程序完成之前无法使用。我试着确保 cutcopymode 是假的。我尝试添加一个额外的副本。 PS 值在 sheet 上使用不同的单元格,最后尝试保存 sheet 以查看是否清除了引用。
我有两个版本,一个版本已记录,另一个版本试图引用所有范围(均已附上)。该宏来自已经 select 编辑了数据 sheet
的宏Sub POP_PRINT_OUT()
'
' Populate Print Out Sheet with Data from Route Sheet
Application.ScreenUpdating = False
ActiveSheet.Unprotect
Range("A80:L135").Select
Selection.Copy
Sheets("Print Out").Select
ActiveSheet.Unprotect
Sheets("Print Out").Range("A19").Select '# 1004 Error with P.S values below #
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("A14").Select
Application.CutCopyMode = False
'ActiveWorkbook.Save
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
Sub POP_PRINT_OUTxxxx()
'
' Populate Print Out Sheet with Data from Route Sheet
Dim sh As Worksheet
Dim rng1 As Range
Dim rng2 As Range
Set wb = ThisWorkbook
Set sh = wb.Sheets("Print Out")
Set rng1 = ActiveSheet.Range("A80:L135")
Set rng2 = sh.Range("A19:L74")
Application.ScreenUpdating = False
ActiveSheet.Unprotect
rng1.Select
Selection.Copy
sh.Select
ActiveSheet.Unprotect
rng2.Select '# 1004 Error with P.S values below #
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("A14").Select
Application.CutCopyMode = False
'ActiveWorkbook.Save
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Application.ScreenUpdating = True
End Sub
sheet 的解除保护似乎导致了问题。
但 avoid using Select.
总是一个好主意
考虑这个简化版本,更改您需要的内容,看看它是否更好。
...
Set rng2 = sh.Range("A19:L74")
sh.Unprotect
rng1.Copy
rng2.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
sh.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
end sub
如果在复制和粘贴之间移动 sh.Unprotect
,您会再次看到错误 returns。