CalcBasic przechodzenie do kolejnej kolumny

Odpowiedz Nowy wątek
2011-11-21 09:58
0

Szanowni forumowicze,
Miałem fajne makro pod Excel, które sprawiało, że gdy wpisałem w ostatnim wierszu danej kolumny, wartość, to przechodziło do następnej kolumny do 1 wiersza.
W OpenOffice te makro nie działa. A ja nie mogę znaleźć żadnego kursu, ani nawet dokumentacji do języka CalcBasic.
Czy znacie jakieś blogi/strony gdzie mogę coś interesującego znaleźć?

Pozdrawiam,
A.


"Ten, de profundis, z ciemnego kurhanu
Na trąbę powstanie. " Juliusz Słowacki

"Polacy! Gdyby Spartanie odżyli i zobaczyli Wasz heroizm i bohaterstwo, waleczny i dzielny ten naród schyliłby przed Wami czoło. Polska nie może być zwyciężona." - J.Bryan

Pozostało 580 znaków

2011-11-21 10:15
bo
1

Uruchom OpenOffice, potem Pomoc => Wsparcie techniczne.
http://user.services.openoffice.org/pl/forum/
Jeszcze nigdy nie dotarłem do ostatniego wiersza.

Pozostało 580 znaków

2011-11-22 17:07

Forum to ja znam (i napisałem na pl i eng), pisałem o dokumentacji:-) Ale dzięki, nawet nie pomyślałem, żeby tam sprawdzić.

Opis problemu z rozwiązaniem.

Problem:
Chcę aby po naciśnięciu enter na ostatniej komórce kolumny (nie tej Excelowej) przeszło mi do następnej do pierwszego wiersza. Oto jak wygląda przykładowy arkusz:
A B C D E
1.- - - - - --
2.- -1- - -11-
3.- -2- - -12-
4.- -3- - -13-
5.- -4- - -14-
6.- - - - - -

1 i 6 wiersz są puste. Kolumny excelowe A i D będą wypełniane i będzie w ich wierszach używany "enter".
Koniec kolumny rozpoznamy jeżeli komórka c + 1, w + 1 będzie pusta ([c,w] to aktualna komórka). Wtedy chcemy przejść do wiersza 2 (czyli nr 1, bo numeracja zaczyna się od 0) i kolumny c + 1.
Excelowa kolumna C oddziela nasze kolumny/tabele. Pozostaje ona usta i należy ją "przeskoczyć".

Oto rozwiązanie problemu:


' rejestracja handlera na klawiaturę
Sub RegisterKeyHandler
    oDocView = ThisComponent.getCurrentController()
    oKeyHandler = createUnoListener("KeyHandler_", "com.sun.star.awt.XKeyHandler")
    oDocView.addKeyHandler(oKeyHandler)
End Sub

' zdarzenie "keyPressed"
Function Keyhandler_KeyPressed(oEvt) As Boolean
    KeyHandler_KeyPressed = TRUE

    'sprawdzanie czy naciśnięty klawisz to "enter"
    If (oEvt.KeyCode = com.sun.star.awt.Key.RETURN) Then
       'wywołanie makra na przechodzenie miedzy kolumnami
       Macro1
    EndIf
End Function

' zdarzenie released
Function KeyHandler_KeyReleased(oEvt) As Boolean
    KeyHandler_KeyReleased = FALSE
End Function 

' makro na przechodzenie do kolumny
Sub Macro1
    oDocument = ThisComponent
    oSelectedCells = oDocument.CurrentSelection
    oActiveCell = oSelectedCells.CellAddress
    nSheet = oActiveCell.Sheet
    nColumn = oActiveCell.Column
    nRow = oActiveCell.Row
    MsgBox nColumn & " " & nRow & " " & nSheet & "jjjj"
    Sheet = ThisComponent.CurrentController.ActiveSheet 
    'Sheet = thisComponent.Sheets(0)
    Cell = Sheet.getCellByPosition(nColumn+1,nRow+1)
    cellCheck = Sheet.getCellByPosition(nColumn+1,nRow+1)
    if cellCheck.String = "" then
        cellToSelect =  Sheet.getCellByPosition(nColumn+2,1)
        ThisComponent.CurrentController.Select(cellToSelect)
        oRanges = ThisComponent.createInstance("com.sun.star.sheet.SheetCellRanges")
        ThisComponent.CurrentController.Select(oRanges)
    end if
End Sub

Pozdrawiam,
A.

P.S. Bo, nie chodziło mi o "excelowe" wiersze. Nie wiedziałem jak się wyrazić, bo jak utworzę sobie własny obszar w excelu i nazwę go tabelą, to nazewnictwo będzie te same. Mogłem jednak używać w odniesieniu do własnych "tabeli" słów krotka/atrybut. Byłoby może łatwiej to rozróżnić.


"Ten, de profundis, z ciemnego kurhanu
Na trąbę powstanie. " Juliusz Słowacki

"Polacy! Gdyby Spartanie odżyli i zobaczyli Wasz heroizm i bohaterstwo, waleczny i dzielny ten naród schyliłby przed Wami czoło. Polska nie może być zwyciężona." - J.Bryan
edytowany 2x, ostatnio: arrowman, 2011-11-22 17:17

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0