2013-11-23 3 views
0

В myFunction я хочу создать журнал на листе с аргументами функции и временем последнего выполнения.Excel VBA: вызов процедуры Sub после выполнения функции

Мой код выглядит так:

Function myFunction(arg1, arg2 As String) 

    //code here 

    Sheets("Sheet1").Range("A1") = arg1 
    Sheets("Sheet1").Range("B1") = arg2 
    Sheets("Sheet1").Range("C1") = datetime.Now 

End Function 

Эта функция не работает с последними 3-х строк (это не иначе).

Я также попытался создать отдельный модуль для выполнения этой задачи:

Function myFunction(arg1, arg2 As String) 

     //code here 

    Call myLog(arg1,arg2) 

    End Function 

Но он не работает ни

Public Sub myLog(arg1,arg2) 
    Sheets("Sheet1").Range("A1") = arg1 
    Sheets("Sheet1").Range("B1") = arg2 
    Sheets("Sheet1").Range("C1") = datetime.Now 
End Sub 

Заранее спасибо за помощь!

+0

посмотрите здесь: http://www.mrexcel.com/forum/excel- Вопросы/617567-call-another-sub-visual-basic-applications.html –

+0

@Mark оба аргумента функции объявлены как Public –

+0

Предоставляет ли код реальную ошибку или делает это запускать, но не заполнять ячейки? – Blackhawk

ответ

1

«Он просто возвращает ошибку #VALUE !, когда Я ввожу функцию в ячейку».

Функция может изменять только ячейку, из которой она вызвана. Таким образом, вы получите сообщение об ошибке при попытке изменить другие ячейки.

Вот некоторые ссылки, которые могут быть полезны:

Making Excel functions affect 'other' cells

VBA - Update Other Cells via User-Defined Function

http://www.vbforums.com/showthread.php?508759-Counting-Particular-Letter-Occurrences-in-a-String

+0

Учитывая все зависимости UDF (это может повлиять на несколько других ячеек, которые зависят от нее), это не имеет смысла делать это. Возможно, нажатие данных в массив будет работать лучше (потреблять меньше ресурсов). Спасибо за Ваш ответ –

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