错误:未定义子或函数 - 简单小计宏
Posted
技术标签:
【中文标题】错误:未定义子或函数 - 简单小计宏【英文标题】:Error: Sub or funtion not defined - Simple subtotal macro 【发布时间】:2018-07-02 15:16:46 【问题描述】:我有这个简单的代码:
Range("A1:C201").Select
Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(2), _
Replace:=True, PageBreaks:=False, SummaryBelowData:=True
当我尝试运行宏时,它显示错误“未定义子或功能”。我没有看到任何 sintax 错误,所以我不确定这是否是我的 VB 设置的问题?
你能帮帮我吗?
【问题讨论】:
你确定消息来自这两行吗? 不确定为什么会出现此错误,但您应该考虑在语句SummaryBelowData:=
中使用常量 xlSummaryBelow
而不是 True
。
您需要发布整个函数,而不仅仅是这两行。这些行没有错。
【参考方案1】:
所有代码都必须存在于子函数或函数中。您不能在这些结构之外编写代码。
试试这个:
Option Explicit
Public Sub runSubTotal()
Range("A1:C201").Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(2), _
Replace:=True, PageBreaks:=False, SummaryBelowData:=xlSummaryBelow
End Sub
注意:您可以使它与任何选定的范围一起工作,而不是使此子例程的范围成为静态。使用以下代码,您将在工作表中选择您的数据,然后运行宏。它会接受用户选择的任何内容:
Option Explicit
Public Sub runSubTotal()
Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(2), _
Replace:=True, PageBreaks:=False, SummaryBelowData:=True
End Sub
【讨论】:
但这会引发错误消息“invalid outside procedure” 除非我在测试表中运行了这段代码并且它没有出现这样的错误。你认为这段代码在什么程序之外? 对不起,我的意思是 OP 的代码 - 如果你把它放在任何 sub 之外,这就是 VBA 编译器抛出的内容。 啊哈。所以我们需要看到完整的代码,而不仅仅是 2 行代码。 是的,我仍然认为错误消息来自其他东西。以上是关于错误:未定义子或函数 - 简单小计宏的主要内容,如果未能解决你的问题,请参考以下文章