我正在为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"
提前致谢
答案 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"文件 - 非常适合学习,也可用德语翻译。