gpt4 book ai didi

excel - UDF 在 VBA 中工作,返回 #REF!在工作簿中

转载 作者:行者123 更新时间:2023-12-04 21:14:27 25 4
gpt4 key购买 nike

我编写了一个函数,计算工作簿中特定工作表的 2014 年销售额,然后在特定单元格中打印 2014 年的总销售额。
我可以在 VBA 中调用该函数,没问题。但是,如果尝试使用工作簿中的函数,则会出现引用错误。我知道#REF!表示公式引用了一个无效的单元格,我是否需要将某种值返回到我试图调用该函数的单元格中?例如,如果我在单元格 F25 中键入 sum2014("A1151"),我是否需要返回某种 bool 值才能使函数正常工作?

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 循环来清理函数,但现在我只想让函数在工作簿中工作,然后稍后重新重写。

最佳答案

虽然从工作表调用的函数是正确的 may not change sheets (如果您尝试使用技巧来解决它,您可能会 run into problems),您的直接问题是 sum2014是一个有效的 Excel 范围地址(第 13403 列(SUM),第 2014 行),因此 #REF!尝试执行 =SUM2014("A1151") 时出错.就好像你的函数被调用了 A1 .

可在公式中使用的名称可能看起来不像有效的 Excel 范围。选择另一个名称(并确保不要更改该函数的其他单元格,否则将出现 #VAL! 错误)。

如果您需要从例程更改各种单元格,请将其设为子程序并从外部事件(例如按钮按下或 Worksheet_Change)调用它。处理程序,但不是来自单元格中的公式。

关于excel - UDF 在 VBA 中工作,返回 #REF!在工作簿中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53134535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com