2017-04-18 42 views
1

我试图创建一个VBA宏,它将搜索“Sheet1”中的非空白单元格,如果非空白,它会粘贴相应的活动单元格从“Sheet1”到“Sheet2”中的同一列。运行时错误:1004(复制到另一个工作表)

下面是我的代码,但我敢肯定,我做错了什么,因为代码抛出我的错误:1004

Sub Test() 
    Dim cel As Range 
    Dim strAddress As String 
    Dim StartPoint As Range 

    Set StartPoint = ActiveCell 
'Change to necessary amount of Rows & Columns 
    With Sheets("Sheet1").Range(Cells(9, 5), Cells(1000, 200)) 
     Set cel = .Find(What:="*", After:=Cells(1000, 200), SearchOrder:=xlByRows, SearchDirection:=xlNext) 
     If Not cel Is Nothing Then 
      strAddress = cel.Address 
      Do 
       ' Do something with cel, e.g. 
       StartPoint.EntireColumn.Copy Destination:=Worksheets("Sheet2").Range(StartPoint.Column & "1").End(xlToRight).Offset(1) 
       Set cel = .FindNext(After:=cel) 
       If cel Is Nothing Then Exit Do 
      Loop Until cel.Address = strAddress 
     End If 
    End With 
End Sub 

可有人请告知我在做什么错? 谢谢!

+1

1)不在这里搜索*运行时错误1004 *。 2)不使用调试器遍历代码来查看您尝试访问对象引用的哪个时间失败或不正确。 3)在这里不再搜索*运行时错误1004 *。 –

+0

嗨,我确实运行了调试器,它在“with”语句中显示错误。而且我明白这个错误是由于VBA没有掌握我在该范围内提到的细胞。但问题是我不是一个强大的宏用户,只是一个学习基础知识的小孩! :)感谢您能否让我知道我在代码中犯的错误! :D –

+2

FWIW - 不合格的'Cells'参考文献使用与Sheets(“Sheet1”)相对应的语句“Range(Cells,9)”,Cells(1000,200))。 .Range(ActiveSheet.Cells(9,5),ActiveSheet.Cells(1000,200))',这显然是无稽之谈。但您真的想要'带有表格(“Sheet1”)。范围(表格(“Sheet1”)。单元格(9,5),表格(“Sheet1”)。单元格(1000,200))''。正如@KenWhite所说,在这个网站上搜索可能会发现数百个问题显示问题所在。 – YowE3K

回答

0

尝试这两个改动:

With Sheets("Sheet1").Range("E9:GR1000") 

cel.EntireColumn.Copy Worksheets("Sheet2").Columns(cel.Column) 
+0

你好:)感谢您的及时响应! 这消除了错误,但值不粘贴到Sheet2。 我添加了目的地:= StartPoint.EntireColumn.Copy Destination:= Worksheets(“Sheet2”)。Columns(StartPoint.Column) 但仍然结果相同。是否还需要添加另一行,以便将复制的列从Sheet1粘贴到Sheet2? –

+0

啊,我想你需要用'cel'替代'StartPoint'(参见编辑答案)。 @DragonWarrior –

+0

再次感谢你:)我理解这个概念!我想我需要调整这个块的升技更符合我的需要。不过,再次感谢你:) –

相关问题