用户定义的函数在 vba 中工作正常,而从显示“值”错误的 excel 表调用时

Posted

技术标签:

【中文标题】用户定义的函数在 vba 中工作正常,而从显示“值”错误的 excel 表调用时【英文标题】:User defined function working fine in vba, while when called from excel sheet showing 'Value' error 【发布时间】:2019-06-19 11:43:42 【问题描述】:

我已经制作了一个函数,用于从具有两个字符串类型参数的 excel 中调用,并在计算特定范围的 excel 表中存在的数字后返回整数值。

从 vba 代码调用时,此函数正常工作,但从 excel 表调用时显示“值”错误

我确实将参数类型更改为范围。但它仍然显示“值错误”

当我只是通过分配返回一个整数值而不使用excel函数时,它在这两种情况下都有效。但是在用户定义的函数代码中使用Excel函数时,它再次显示'Value'错误。

Public Function countEvent(ByVal name As String, ByVal travelType As String) As Integer

    Dim finalValue, tempValue, i As Integer
    Dim rng As Range

    Dim current As Worksheet
    countEvent = 10
    Set current = ActiveWorkbook.Worksheets("Sheet2")
    Set rng = current.Range("T4:T50000")


    'These two values are pasted in two cells in excel sheet, as these values are further being used by some other formula
    current.Range("T2").Value = name
    current.Range("U2").Value = travelType

    countEvent = Application.WorksheetFunction.Count(rng)

End Function

它被定义为返回excel表格特定范围内的数字,但在excel表格中显示'值错误'

【问题讨论】:

状态可能有些问题,例如 ActiveWorkbook 不是您所期望的。也许尝试一些“消息框调试”?添加on error goto...并将错误输出为消息框或将其写入文件。 我不明白你的功能。你给出的论点是你在计算中从未使用过的。您可以手动将这两个值放在您尝试以编程方式放置它们的单元格中。 【参考方案1】:

工作表上的 UDF cannot modify the formatting of a cell or workbook or move values。 如果删除下面的行,它应该可以工作。

current.Range("T2").Value = name
current.Range("U2").Value = travelType

编辑: 对于您想做的事情,我认为您应该探索工作表事件,例如Worksheet_Change

【讨论】:

感谢您的回复。它正在工作,但在这种情况下,它会发挥作用,这是我所希望的。

以上是关于用户定义的函数在 vba 中工作正常,而从显示“值”错误的 excel 表调用时的主要内容,如果未能解决你的问题,请参考以下文章

VBA 在 Microsoft Word 中工作正常,但在 Libre Office 作家中无法工作如何修复 [关闭]

Excel VBA - 使用 FindNext 后功能停止(在子程序中工作)

如何让自动填充在 VBA 中工作?

udf(用户定义函数)如何在 pyspark 中工作?

具有联合的子字符串在用户定义的函数中工作方式不同

在 React 本机键盘仅在 IOS 的模态上显示,在 android 中工作正常