select列中的最后一个单元格 – 错误424?

我正在尝试select列中的最后一个单元格,将其值复制并粘贴到另一个工作簿中。 在第一个工作簿中,我在空间中创build了一个button。 一旦你点击那个button,我希望它消失,从其他工作簿(NCR日志)的值,添加1的值,并将其粘贴到第一个工作簿中的button曾经是。 我认为这将是很容易的,但是当我运行macros,我得到一个运行时错误424:对象需要。 这里有什么奇怪的东西吗? 日志只是在Excel中的一组列和行…没有什么独特的。

对于参考:NCR日志是我试图从中获取价值的工作簿。 NCRDONE是我试图把价值的工作簿。 日志中的列B是我想要的最后一个单元格的位置。 I4是我希望在NCRDONE中进入的单元格。

Sub tryingtoaDD() With ActiveSheet For Each Sh In .Shapes If Not Application.Intersect(Sh.TopLeftCell, .Range("H3:J5")) Is Nothing Then Sh.Delete End If Next Sh End With ScreenUpdating = False Workbooks.Open ("R:\Quality\NCR's\NCR Log\NCR Log.xlsm") ActiveSheet.Range("B" & Cells.Rows.Count).End(xlUp).Select.Copy Workbooks.Open ("R:\Quality\NCR's\NCR Log\NCRDONE.xlsm") Range("I4").Select.Paste.Select ActiveCell.Value = ActiveCell.Value + 1 ScreenUpdating = True End Sub 

任何帮助将不胜感激!

这应该做到这一点:

 Sub tryingtoaDD() Dim WBLog as Workbook Dim WBDone as Workbook With ActiveSheet For Each Sh In .Shapes If Not Application.Intersect(Sh.TopLeftCell, .Range("H3:J5")) Is Nothing Then Sh.Delete End If Next Sh End With ScreenUpdating = False Set WBLog = Workbooks.Open("R:\Quality\NCR's\NCR Log\NCR Log.xlsm") Set WBDone = Workbooks.Open("R:\Quality\NCR's\NCR Log\NCRDONE.xlsm") WBLog.ActiveSheet.Range("B" & Cells.Rows.Count).End(xlUp).Copy _ Destination:=WBDone.ActiveSheet.Range("I4") ActiveCell.Value = ActiveCell.Value + 1 ScreenUpdating = True End Sub 

在您的原始代码中,这将失败:

 ActiveSheet.Range("B" & Cells.Rows.Count).End(xlUp).Select.Copy 

因为Select是一个不返回对象的方法,所以424(Object Required)错误:你试图从非对象中调用一个方法( .Copy )。

这条线也会因为类似的原因而失败。

 Range("I4").Select.Paste.Select 

请注意, Copy方法有一个可选参数Destination ,我们可以使用它来精确指定粘贴的结果。 这就是我在上面的答案中所做的。