错误:未定义子或函数 - 简单小计宏

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 行代码。 是的,我仍然认为错误消息来自其他东西。

以上是关于错误:未定义子或函数 - 简单小计宏的主要内容,如果未能解决你的问题,请参考以下文章

未定义子或函数过程

尝试通过单击按钮调用子程序并收到编译错误:未定义子或函数

VBA Excel 2016 中未定义子或函数

BASIC 运行时错误。未定义子过程或功能过程

初学者代码问题:“未定义子或函数”

VB 脚本 if 语句:未定义子