2015-05-29 61 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

欢迎您。请将我的帖子标记为答案,然后关闭此主题。 –

相关问题