【发布时间】:2020-04-09 12:18:25
【问题描述】:
我编写了一个函数,计算工作簿中特定工作表的 2014 年销售额,然后在特定单元格中打印 2014 年的总销售额。 我可以在 VBA 中调用该函数,没问题。但是,如果尝试使用工作簿中的函数,则会出现参考错误。我知道#REF!表示公式引用了一个无效的单元格,我是否需要将某种值返回到我试图调用该函数的单元格中?例如,如果我在单元格 F25 中键入 sum2014("A1151"),我是否需要返回某种布尔值才能使函数正常工作?
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 until 循环而不是 for 循环来清理该函数,但现在我只想让该函数在工作簿中工作,然后稍后重新重写。
【问题讨论】:
-
除了调用单元格之外,您不能让 UDF 更改工作表
-
只是为了确保我理解你,我的 UDF 不能更改值,除非在我输入 UDF 的单元格中?因此,如果我将我的 UDF 放在单元格 A25 中,但想将总销售额的值返回到单元格 E3 中,我不能?