(Excel 2010)您好,我使用数据表上为每个寄存器保存的数据自动化了一个寄存器,这些数据通过 VBA 提供给“打印输出”表。
第一次运行有效,但是当我选择另一个运行时,我得到“运行时错误‘1004’粘贴范围类的特殊方法失败”如果我清除了错误,它将运行一次,然后在第二次尝试时失败。阅读 MS 帮助(我现在找不到),它说没有正确引用范围之类的内容,因此在程序完成之前无法使用它。我尝试确保 cutcopymode 绝对是错误的,我尝试添加一个额外的副本 - 在工作表上使用不同单元格的 PS 值,最后尝试保存工作表以查看是否清除了引用,但它们都失败了。
我有两个版本,一个是我录制的版本,另一个是我尝试引用所有范围的版本(均已附上) 宏紧跟已选择数据表的宏
你能帮忙吗,克里斯
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
似乎没有保护纸张会导致问题。
但避免使用 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
在复制和粘贴之间移动,您可以看到错误再次返回。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句