2017-01-10 51 views
0

我正在尝试选择列中的最后一个单元格,将其值复制并粘贴到其他工作簿中。在第一本工作簿中,我在空间中创建了一个按钮。一旦你点击那个按钮,我希望它消失,从另一个工作簿(NCR日志)中获取值,将值加1,并将其粘贴到第一个工作簿中的按钮曾经是。我认为这会很容易,但是当我运行宏时,出现运行时错误424:Object Required。这里有什么奇怪的东西吗?日志只是excel中的一组列和行......没有什么特别的。在列中选择最后一个单元格 - 错误424?

For Reference: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 

任何帮助将不胜感激!

+3

删除'.Select'它是一个类似'.copy'或'.paste'的命令,并且没有子节点。 –

+0

'Range(“I4”)。Paste'将粘贴它为你。您不需要选择单元格,因为代码知道I4是粘贴所需的位置 –

+0

@ Mr.Burns否,它不会。范围/单元格对象不具有Paste方法。 –

回答

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 (Object Required)错误:您正尝试从非对象调用方法(.Copy)。

由于类似的原因,此行也会失败。

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

注意,Copy方法有一个可选参数,Destination我们可以用它来精确指定应该在哪里产生粘贴。这就是我在上面的答案中所做的。

+1

你击败了我,做得更好,你值得拥有我的+1 –

相关问题