[SOLVED] Ukrywanie co drugiego wiersza

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO
kristoferes
Posty: 11
Rejestracja: pn lis 30, 2009 10:21 am

[SOLVED] Ukrywanie co drugiego wiersza

Post autor: kristoferes »

Czy ktoś wie jak zmusić funkcję HideRow do tego żeby ukrywała co 2 wiersz w danym arkuszu, bądź lepiej te, w których w pierwszej komórce jest zadana wartość. Rejestrator makr zarejestrował mi coś takiego, jednak makro zatrzymuje się po ukryciu wiersza z zaznaczoną komórką.

Kod: Zaznacz cały

sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:HideRow", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:HideRow", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:HideRow", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:HideRow", "", 0, Array())
end sub
Będę bardzo wdzięczny za jakąkolwiek pomoc.
Ostatnio zmieniony pt mar 19, 2010 10:18 pm przez kristoferes, łącznie zmieniany 2 razy.
OpenOffice 3.1 na Windows Vista, windows XP, Linux
Jan_J
Posty: 4579
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Ukrywanie co drugiego wiersza

Post autor: Jan_J »

A tam zaraz rejestrator. W OpenOffice kod z rejestracji jest do niczego. W Basicu:

Kod: Zaznacz cały

Sub test()
  rem ukrywa w bieżącym arkuszu wiersze, które mają tekst z wzorca w kolumnie A. Przetwarzane są wiersze od począwszy pierwszego, dopóki w kolumnie A są niepuste wartości.
  arkusz = thisComponent.CurrentController.ActiveSheet
  wzorzec ="kuku"
  i = 0
  p = arkusz.getCellByPosition(0,i).getString()
  while p <> ""
    arkusz.rows.getByIndex(i).isVisible = (p <> wzorzec)
    i = i+1
    p = arkusz.getCellByPosition(0,i).getString()
  wend
End sub
Proste, szybkie, przyjemne. Powodzenia
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
kristoferes
Posty: 11
Rejestracja: pn lis 30, 2009 10:21 am

Re: Ukrywanie co drugiego wiersza

Post autor: kristoferes »

O to mi właśnie chodziło. Jan_J Po raz kolejny wielkie dzięki :).
OpenOffice 3.1 na Windows Vista, windows XP, Linux
ODPOWIEDZ