2017-01-10 76 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 –

相關問題