未定义子或函数过程

Posted

技术标签:

【中文标题】未定义子或函数过程【英文标题】:Sub- or Function Procedure not defined 【发布时间】:2016-04-22 12:04:44 【问题描述】:

我现在正在为 Libre Office 编写我的第一个宏,但遇到了一个问题:我的代码抛出错误:BASIC 运行时错误;。

带有“If Cells (RowCnt,ChkCol......) 的行会引发错误。 我查看了此处的其他条目,但找不到错误...谁能帮助我?

REM  *****  BASIC  *****

Sub Zeilennausblenden_Nullsummen
BeginRow=4
EndRow = 46
ChkCol= D

For RowCnt = BeginRow To EndRow step 1
    If Cells(RowCnt,ChkCol).Value > 1 Then
        Cells(RowCnt,ChkCol).EntireRow.Hidden = True
    End if
Next
End Sub

PS:该函数应该隐藏“D”列中出现大于“1”整数的所有行

提前致谢

【问题讨论】:

【参考方案1】:

这是代码在 LibreOffice Basic(又名 StarBasic)中的样子:

Sub Zeilennausblenden_Nullsummen
    BeginRow=4
    EndRow = 46
    ChkCol= 3
    oSheet = ThisComponent.Sheets(0)
    For RowCnt = BeginRow To EndRow step 1
        oCell = oSheet.getCellByPosition(ChkCol,RowCnt)
        If oCell.Value > 1 Then
            oRow = oSheet.getRows().getByIndex(RowCnt)
            oRow.IsVisible = False
        End if
    Next
End Sub

我不确定 BeginRow 应该是 3 还是 4,因为它是从零开始的。你可以测试它并决定。

请注意,完成此任务不需要宏。最简单的方法是去Data -> More Filters -> Standard Filter

【讨论】:

这对我很有帮助,谢谢!我也不知道数据/过滤器选项【参考方案2】:

那是因为CELLS 不是 StarBasic 函数。

它是 VBA(不同的编程语言)。如果将语句 (Option VBASupport 1) 放在源代码的第一行,则某些版本的 OpenOffice 支持使用它。

在网上查看 Andrew Pitonyak 的“OpenOffice Macros Explained”文档 - 非常适合学习,还提供德语翻译。

【讨论】:

谢谢。我把它放在第一行,但它没有用 - 我使用 Libre Office Calc,现在切换到通常的 excel ......将给出报告。 Andrew 的文档是一个很好的资源,但没有解释如何显示和隐藏行,如问题中所要求的那样。 问题是“为什么我有一个错误”:-) 但无论如何 - 我检查了我的 3 份 Andrew 文档,你说得对,它没有显示隐藏行。为您的示例 +1 有道理。我想我们每个人都回答了问题的不同部分。

以上是关于未定义子或函数过程的主要内容,如果未能解决你的问题,请参考以下文章

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

URLDownloadToFile 生成编译错误:未定义子或函数

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

VBA Excel 2016 中未定义子或函数

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

为啥在尝试读取记录集字段时未定义访问 vba 抛出子或函数?