选择列中的最后一个单元格 - 错误424?

时间:2017-01-10 15:19:37

标签: excel vba excel-vba runtime-error

我正在尝试选择列中的最后一个单元格,复制它的值,然后将其粘贴到另一个工作簿中。在第一个工作簿中,我在空间中创建了一个按钮。单击该按钮后,我希望它消失,从其他工作簿中获取值(NCR日志),将值加1,然后将其粘贴到按钮所在的第一个工作簿中。我认为这很容易,但是当我运行宏时,我得到一个运行时错误424:Object Required。这里有什么看起来很奇怪吗?日志只是excel中的一组列和行......没有什么独特之处。

供参考:NCR Log是我正在尝试从中获取值的工作簿。 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

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

这应该这样做:

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(需要对象)错误:您正试图调用方法({ {1}})来自非对象。

此行也会因类似原因而失败。

.Copy

请注意,Range("I4").Select.Paste.Select 方法有一个可选参数Copy,我们可以用它来准确指定粘贴应该 的位置。这就是我在上面的答案中所做的。