2016-04-22 109 views
1

我正在爲Libre Office編寫我的第一個宏,現在我遇到了一些問題:我的代碼拋出了以下錯誤:BASIC Runtime error;子程序或功能程序未定義。子程序或函數程序未定義

與「如果細胞(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

這裏是代碼看起來像在LibreOffice的基本(又名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

+0

這對我很感謝!我也不知道數據/過濾器選項 – Cribber

1

這是

感謝,因爲CELLS不是StarBasic函數。

它是VBA(不同的編程語言)。如果語句(Option VBASupport 1)放在源代碼的第一行,某些版本的OpenOffice支持使用它。

檢查安德魯Pitonyak的「OpenOffice宏解釋」文件的網絡 - 非常好的學習和德文翻譯,也可用。

+0

謝謝。我把它放在第一行,但它沒有奏效 - 我使用Libre Office Calc,現在切換到通常的excel ...將會報告。 – Cribber

+0

安德魯的文檔是一個很好的資源,但並沒有解釋如何顯示和隱藏行,正如問題中所述。 –

+1

問題是「爲什麼我有一個錯誤」:-) 但無論如何 - 我檢查了我的安德魯文件的3份副本,你說得對,它沒有顯示隱藏行。 +1你的例子 – ngulam