Я написал функцию, которая вычисляет продажи за 2014 год для конкретных рабочих листов внутри рабочей книги, а затем печатает общие продажи за 2014 год в определенной ячейке.
Я могу вызвать функцию внутри VBA, никаких проблем. Но если попытаться использовать функцию в рабочей книге, я получаю ошибку ссылки. Я знаю #REF! означает, что формула относится к недопустимой ячейке. Нужно ли возвращать какое-то значение в ячейку, в которую я пытаюсь вызвать функцию? Например, если я ввожу sum2014 ("A1151") в ячейку F25, нужно ли возвращать какое-то логическое значение для правильной работы функции?
Function sum2014(someaccount As String) As Currency
Dim i As Integer
Dim total As Currency
Dim ws As Worksheet
total = 0
Set ws = ActiveWorkbook.Worksheets(someaccount)
For i = 1 To 50
If ws.Range("A3").Offset(i, 0) >= DateValue("January 1, 2014") And ws.Range("A3").Offset(i, 0) <= DateValue("December 1, 2014") Then
total = total + ws.Range("A3").Offset(i, 1)
sum2014 = total
End If
Next
If Worksheets("New Charges").Range("C3").Offset(i, 0) = someaccount Then
Worksheets("New Charges").Range("E3").Offset(i, 0) = total
End If
For i = 1 To 5
If Worksheets("New Charges").Range("C3").Offset(i, 0).Value = someaccount Then
Worksheets("New Charges").Range("E3").Offset(i, 0).Value = total
End If
Next
End Function
Пример вызова функции внутри VBA:
Sub testfunction()
sum2014 ("A1151")
sum2014 ("B1808")
sum2014 ("C3711")
sum2014 ("D3265")
End Sub
Я могу вызвать функцию внутри VBA, и она отлично работает. Продажи рассчитываются и размещаются в нужном месте. Но я не могу назвать UDF внутри рабочей книги. Я вызываю функцию с
sum2014=("A1151")
Любые советы или предложения будут с благодарностью. Возможно, я мог бы очистить функцию с помощью do while или do while, а не for for, но сейчас я просто хотел бы заставить функцию работать внутри рабочей книги, а затем вернуться к ее переписыванию позже.