我正在尝试选择列中的最后一个单元格,复制它的值,然后将其粘贴到另一个工作簿中。在第一个工作簿中,我在空间中创建了一个按钮。单击该按钮后,我希望它消失,从其他工作簿中获取值(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
非常感谢任何帮助!
答案 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
,我们可以用它来准确指定粘贴应该 的位置。这就是我在上面的答案中所做的。