子定义或功能过程未定义

时间:2016-04-22 12:04:45

标签: macros libreoffice

我正在为Libre Office编写我的第一个宏,我遇到了一个问题:我的代码抛出错误:BASIC Runtime error;未定义子程序或功能程序。

" 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:该函数应该隐藏所有高于" 1"的整数行。列出现在" D"

提前致谢

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

那是因为CELLS不是StarBasic函数。

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

检查网络上的Andrew Pitonyak" OpenOffice Macros Explained"文件 - 非常适合学习,也可用德语翻译。