我正在尝试编写一个excel宏来复制一个工作表中的特定单元格并将它们粘贴到另一个工作表中。不幸的是,代码不起作用,我无法看到我出错的地方。这就是我所拥有的:
Sub sbCopyRangeToAnotherSheet()
Range("A1").Select
Selection.Copy
Sheets("Sheet1").Select
lMaxRows = Cells(Rows.Count, "B").End(xlUp).Row
Range("B" & lMaxRows + 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Sheet2").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End
它试图遵循这个伪代码:
如果 工作表中的一行有一个数字是第一个单元格,其余为空白,复制该数字并将其粘贴到第二张单元格A1中。
否则 向下移动一个单元格并再次检查
我将它分配给一个按钮并在我点击它时运行。我在“Selection.PasteSpecial ....”行上收到调试错误。
我没有编程经验,这是我的第一次尝试。如果有任何错误。谷歌搜索这个主题让我进入了我的工作计算机因某种原因而被阻止的网站。
谢谢!
答案 0 :(得分:0)
您收到该错误是因为您的剪贴板在粘贴时变空了。
我的建议。避免使用 .Select 。定义对象并使用它们。您可能希望看到此链接
How to avoid using Select in Excel VBA macros
声明对象后,请在粘贴之前移动复制行。
或者写下这样的东西
lMaxRows = Sheets("Sheet1").Range("B" & _
Sheets("Sheet1").Rows.Count).End(xlUp).Row + 1
Sheets("Blah Blah").Range("A1").Copy
Sheets("Sheet1").Range("B" & lMaxRows).PasteSpecial _
Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False