在VBA for Excel中使用小计公式

在VBA for Excel中使用小计公式,excel,vba,Excel,Vba,我有一个VBA过程,它从数据库中提取一些数据,将其转储到工作表中,添加一个标题行,并将所有数据转换为表。那个钻头很好用。返回的数据的行数不确定。我需要做的是在末尾添加一个摘要行。我希望通过使用subtotal函数来解释未知的表长度:subtotal(109,[5年总计]),例如 问题是我有一个 运行时错误“1004”:应用程序定义的错误或对象定义的错误 此代码有效 Range(左上)。End(xlDown)。Offset(1,6)。Value=“测试现金5年总计” 当此代码抛出错误时 范围(左上

我有一个VBA过程,它从数据库中提取一些数据,将其转储到工作表中,添加一个标题行,并将所有数据转换为表。那个钻头很好用。返回的数据的行数不确定。我需要做的是在末尾添加一个摘要行。我希望通过使用subtotal函数来解释未知的表长度:
subtotal(109,[5年总计])
,例如

问题是我有一个

运行时错误“1004”:应用程序定义的错误或对象定义的错误

此代码有效

Range(左上)。End(xlDown)。Offset(1,6)。Value=“测试现金5年总计”

当此代码抛出错误时

范围(左上)。结束(xlDown)。抵销(1,6)。公式=“=小计(109,[现金:5年总计]”

upperleft
变量是表格的左上角单元格。这似乎与我用于公式/值的字符串有关,因为如果我尝试将公式设置为这样的值

Range(左上)。End(xlDown)。Offset(1,6)。Value=“=小计(109,[现金:5年总计]”


我得到了相同的错误

只要公式位于作为表一部分的总计行中,就应该有效,但如果不是,则需要包括表名:

=SUBTOTAL(109,Table1[cash: 5 year total])

例如

您似乎缺少公式中的表名。谢谢。让我调查一下。我将宏记录器用于小计的语法,因此它可能做出了一些错误的假设。如果它位于作为表的一部分的总计行中,则您的公式应该有效,但如果不是,则需要包括表名:
=subtotal(例如,109,Table1[现金:5年总计])
。添加表引用就是问题所在。如果你把你的评论作为建议的答案,我会接受。我想让你得到荣誉。非常感谢你,罗里。我在小计中找到的信息没有调用表引用,excel在记录器中默认情况下也没有这样做。这是一个很好的捕获。我相信宏记录器会提供我需要的详细信息。事实并非如此。我不是一个专注于VBA开发的人。另外,这很好,因为我在网上找到的所有文档都没有提到在小计公式中引用表名,当然,错误消息也没有帮助。谢谢Rory!