未定义子或函数过程
Posted
技术标签:
【中文标题】未定义子或函数过程【英文标题】: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”整数的所有行
提前致谢
【问题讨论】:
【参考方案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 有道理。我想我们每个人都回答了问题的不同部分。以上是关于未定义子或函数过程的主要内容,如果未能解决你的问题,请参考以下文章