用户定义的函数在 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 作家中无法工作如何修复 [关闭]