首页 > 解决方案 > 尝试调用函数时出现名称错误

问题描述

我还在学习 VBA,所以我可能会犯很多非常基本的错误。目前我正在尝试制作一个可以计算表格行数的宏。这个子工作完美(使用名为“Tab”的表)。

Sub AddRowTable()
ActiveSheet.ListObjects("Tab").ListRows.Add (2)
End Sub

但是,当我尝试将此 sub 转换为函数以便可以使用表名作为变量调用它时,在单元格中写入“=AddRowTableFunction(Tab)”时出现名称错误。

Function AddRowTableFunction(TableName)
ActiveSheet.ListObjects(TableName).ListRows.Add (3)
End Function

我知道这只是类型的问题,但我只是找不到如何正确地做到这一点。

谢谢。

标签: vba

解决方案


目前我正在尝试制作一个可以计算表格行数的宏。

首先,这不是您的代码正在做的事情。您的代码正在向表中添加一行。将使用 访问行数ListRows.Count

当我尝试将此子转换为函数时,我可以使用表名作为变量来调用它...

您不需要 aFunction来包含变量。aSub和 a之间的区别在于FunctionaFunction 返回一个变量,而 aSub不返回(即 aFunction 一个变量返回给使用它的代码)。Subs 和Functions 都可以带变量

返回给定表中行数的AFunction将是这样的:

Function AddRowTableFunction(TableName As String)
    AddRowTableFunction = ActiveSheet.ListObjects(TableName).ListRows.Count
End Function

对于添加行,您可能会使用 a Sub,因为添加行的操作不会返回任何信息:

Sub AddRowTable(TableName As String)
    ActiveSheet.ListObjects(TableName).ListRows.Add
End Sub

最后,当Function在公式中使用时,正如 Apafey 指出的那样,您需要写"Tab"(用引号引起来),而不仅仅是Tab. "Tab"告诉 Excel 传递单词Tab的文本,同时Tab告诉 Excel 查找名为 的范围Tab,该范围可能不存在。


推荐阅读