2017-05-26 168 views
0

我正在尝试编写一个从一个工作表复制特定单元格并将其粘贴到另一个工作表中的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

您正在收到该错误,因为在粘贴时剪贴板将变空。

我的建议。避免使用。选择。定义你的对象并与它们一起工作。您可能希望看到这个链接

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 
相关问题