【问题标题】: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”整数的所有行

提前致谢

【问题讨论】:

    标签: macros libreoffice


    【解决方案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
    • 有道理。我想我们每个人都回答了问题的不同部分。
    猜你喜欢
    • 2014-08-30
    • 2017-05-14
    • 1970-01-01
    • 2015-10-26
    • 1970-01-01
    • 2019-01-08
    • 2012-05-11
    • 1970-01-01
    • 2014-11-28
    相关资源
    最近更新 更多