【发布时间】:2021-10-06 12:11:59
【问题描述】:
早上好,
我目前正在学习 VBA 编码,所以我不确定我是否做错了什么。我对Paste 和PasteSpecial 方法有一些问题。即使从录制的宏运行脚本时,它也会显示一个名为“运行时错误'1004':应用程序定义或对象定义的错误”的错误。
简单粗暴的录制宏如下。
Sub Macro1()
'
' Macro1 Macro
'
'
Sheets("Aggressive").Select
ActiveCell.Range("A1:D15").Select
Selection.Copy
ActiveCell.Offset(18, 7).Range("A1").Select
Sheets("All Portfolios").Select
ActiveCell.Offset(2, -3).Range("A1").Select
ActiveSheet.Paste
End Sub
我不确定为什么会发生这种情况,书面“ex novo”代码和
PasteSpecial 方法应用于 Range obj。
有什么我想念的吗?我还想说明它工作了一段时间(Paste 和PasteSpecial)然后突然发生了这个错误并继续发生。
我尝试了一些在互联网上找到的解决方案,但它仍然不断发生,我认为录制的宏不起作用是不正常的。
提前谢谢!
---编辑 非常感谢@Dominique,这实际上是一个错误。 在为我的问题寻找解决方案时,我已经阅读了您发布的 URL,但是由于现在我的程序非常简单,我还没有应用“变量”方式来编写代码。 但是,即使在尝试应用指定的变量 url 方法而不是选择时,复制和粘贴方法也存在同样的问题。之前发布的代码来自一个录制的宏,所以老实说,我不知道为什么它会产生负偏移。但是,以下是我在参加在线 vba 课程时编写的代码,我无法理解问题是否再次出现在偏移方法的使用或其他方面。
Sub GenRep()
Dim x As Integer
For x = 1 To Worksheets.Count - 1
Worksheets(x).Select
Range("B6").Select
Selection.CurrentRegion.Select
Range("B2000").Select
Selection.End(xlUp).Select
ActiveCell.Offset(2, 0).Select
ActiveCell.Value = Worksheets(x).Name & "portfolio"
ActiveCell.Offset(2, 0).Select
ActiveSheet.Paste
Next x
End Sub
【问题讨论】:
-
欢迎来到 SO。我认为您首先必须了解 Excel-VBA 的范围/单元格概念。可能这个链接可以帮助你:excelmacromastery.com/excel-vba-range-cells。然后你就可以开始复制值了。
-
糟糕,您正在粘贴而不复制 :-)
标签: excel vba copy-paste