子程序或函数程序未定义

Sub- or Function Procedure not defined

我现在正在为 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”的整数的行

提前致谢

那是因为 CELLS 不是 StarBasic 函数。

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

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

以下是 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.