2015-05-29 2 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/ru-ru/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 к a `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

Ваш прием. Пожалуйста, отметьте мой пост как ответ, чтобы закрыть эту тему. –

Смежные вопросы