2015-05-29 109 views
0

下面是複製和粘貼列最後一行數據的代碼。它在命令按鈕上工作,但如果我把它作爲一個函數,它不工作。它會給出0或錯誤的結果。請檢查。謝謝。複製和粘貼列最後一行的最後一個數據的功能

Function CopyCell() 

    Application.Volatile True 
    Dim eRow As Integer 
    Dim i As Integer 

    With Sheets("Weekly Score") 
    eRow = .Cells(Rows.Count, "N").End(xlUp).Row 
    .Cells(eRow, "N").Copy 
    .Range("AG3").PasteSpecial xlPasteValues 
    End With 

    ENd Function 
+0

它的作品發現我看到沒有erros – 0m3r

+0

你是否嘗試從一個單元格中調用它?您不能以任何方式複製,粘貼或修改其他單元格與從單元格調用的UDF。 [https://support.microsoft.com/en-us/kb/170787](https://support.microsoft.com/en-us/kb/170787) – vacip

+0

UDF不應該(我認爲即使' t)寫入其他單元格。 UDF應該只返回一個值,因此它不起作用。 –

回答

0

試着做這個分配的MyFunction到您的按鈕

Option Explicit 
Sub MyFunction() 
    Call CopyCell 
End Sub 

Function CopyCell() 
Application.Volatile True 
    Dim eRow As Integer 
    Dim i  As Integer 

    With Sheets("Weekly Score") 
     eRow = .Cells(Rows.count, "N").End(xlUp).Row 
     .Cells(eRow, "N").copy 
     .Range("AG3").PasteSpecial xlPasteValues 
    End With 

End Function 
0

如果你想要一個UDF修改的功能,例如:

Public Function CopyCell() 
    Application.Volatile True 
    Dim eRow As Integer 
    Dim i As Integer 

    With Sheets("Weekly Score") 
     eRow = .Cells(Rows.Count, "N").End(xlUp).Row 
     CopyCell = .Cells(eRow, "N").Value 
    End With 
End Function 

否則失去Volatile並更改Function到一個Sub,只需手動調用它:

Sub CopyCell() 

    Dim eRow As Integer 
    Dim i As Integer 

    With Sheets("Weekly Score") 
    eRow = .Cells(Rows.Count, "N").End(xlUp).Row 
    .Cells(eRow, "N").Copy 
    .Range("AG3").PasteSpecial xlPasteValues 
    End With 
End Sub 

請記住,Application.Volatile True將導致函數在任何計算執行時重新計算。這可能會嚴重影響性能。

+0

感謝您的幫助。你提供的第一個作品已經開始了。謝謝! – xtina1231

+1

歡迎您。請將我的帖子標記爲答案,然後關閉此主題。 –

相關問題