Macros 未定义子或功能程序

Macros 未定义子或功能程序,macros,libreoffice,Macros,Libreoffice,我现在正在为libreoffice编写我的第一个宏,我遇到了一个小问题:我的代码抛出错误:基本运行时错误;未定义子程序或功能程序 带有“If Cells(RowCnt,ChkCol…)的行抛出错误。 我已经查看了这里的其他条目,但我找不到错误…有人能帮我吗 REM ***** BASIC ***** Sub Zeilennausblenden_Nullsummen BeginRow=4 EndRow = 46 ChkCol= D For RowCnt = BeginRow To End

我现在正在为libreoffice编写我的第一个宏,我遇到了一个小问题:我的代码抛出错误:基本运行时错误;未定义子程序或功能程序

带有“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”的整数的所有行


提前感谢

这是因为
单元格
不是StarBasic函数

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


在网上查看Andrew Pitonyak的“OpenOffice Macros解释”文档-非常适合学习,也有德语翻译。

以下是LibreOffice Basic(又名StarBasic)中的代码:

Sub-Zeilennausblenden\u Nullsummen
BeginRow=4
EndRow=46
ChkCol=3
oSheet=此组件。工作表(0)
对于RowCnt=BeginRow到EndRow步骤1
oCell=oSheet.getCellByPosition(ChkCol,RowCnt)
如果oCell.Value>1,则
oRow=oSheet.getRows().getByIndex(RowCnt)
oRow.IsVisible=False
如果结束
下一个
端接头
我不确定BeginRow应该是3还是4,因为它是基于零的。你可以测试它并决定


请注意,完成此任务不需要宏。最简单的方法是转到
数据->更多过滤器->标准过滤器

谢谢。我把它放在第一行,但它不起作用-我使用了Libre Office Calc,现在切换到常用的excel…将给出报告。Andrew的文档是一个很好的资源,但没有解释如何显示和隐藏行,如问题中所述。问题是“为什么我有错误?”“:-)但不管怎样-我检查了我的3份安德鲁的文件,你说得对,它没有显示隐藏行+1就你的例子来说,这是有道理的。我想我们每个人都回答了问题的不同部分。这对我帮助很大,谢谢!我也不知道数据/过滤器选项