Witam.
W pierwszych słowach witam serdecznie wszystkich. To jest mój pierwszy post choć z OO a teraz z LO mam już długo styczność to dzisiaj pojawił się problem na który szukam odpowiedzi.
Mam w starym pliku Excela makro:
"Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$9" Then ActiveSheet.Name = Cells(9, 3).Value
End Sub"
Zmienia mi ono nazwę arkusza na taką jaką zdefiniuje w komórce. Chciałbym taka funkcjonalność osiągnąć w OO lub LO. jak to zrobić?
Pozdrawiam
Tomek
Odpowiednik makra z excela na OO/LO
Odpowiednik makra z excela na OO/LO
LibreOffice 5 na Windows 10
Re: Odpowiednik makra z excela na OO/LO
Kod: Zaznacz cały
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$9" Then ActiveSheet.Name = Cells(9, 3).Value
End SubKod: Zaznacz cały
Sub Worksheet_Change(ByVal Target As Range)
activeSheet = thisComponent.currentController.getActiveSheet()
If Target.CellAddress.Row = 8 and Target.CellAddress.Column = 2 Then
activeSheet.setName(Target.getString())
end if
End SubKod: Zaznacz cały
sub test
Worksheet_change(thisComponent.currentController.getActiveSheet().getCellByPosition(2,8))
end subExcel ma wbudowane powiązania między nazwami makr i wywoływaniem ich w określonych zdarzeniach.
W AOO/LO automatyczne wywołanie po zdarzeniu uzyskuje się na jeden z dwóch sposobów:
- albo przez interfejs użytkownika: Narzędzia/Dostosuj/Zdarzenia
- albo przez ustawienie programowe interfejsu XUNOListener -- kilka przykładów już jest na forum, warto przejrzeć.
JJ
LO (25.2) ∙ Python (3.13|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (25.2) ∙ Python (3.13|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Odpowiednik makra z excela na OO/LO
Więcej: patrz http://forum.openoffice.org/pl/forum/vi ... ener#p5868
Wersja robocza listeneraStartListener przypisz do zdarzenia otwarcia tego skoroszytu, w którym to wszystko ma się odbywać.
Wersja robocza listenera
Kod: Zaznacz cały
sub StartListener()
oSheet = thisComponent.Sheets.getByIndex(0)
aRange = "C9"
oGroup=oSheet.getCellRangeByName(aRange)
oListener = createUnoListener("my_","com.sun.star.chart.XChartDataChangeEventListener")
oGroup.addChartDataChangeEventListener(oListener)
End Sub
Sub my_chartDataChanged(oEvt)
arkusz = thisComponent.Sheets.getByIndex(oEvt.Source.CellAddress.Sheet)
k = oEvt.Source.CellAddress.Column
w = oEvt.Source.CellAddress.Row
kom = arkusz.getCellByPosition(k,w)
arkusz.setName(kom.getString())
End Sub
JJ
LO (25.2) ∙ Python (3.13|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (25.2) ∙ Python (3.13|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Odpowiednik makra z excela na OO/LO
Dzięki za pomoc.
Będę starał się to wszystko uruchomić choć widzę, że w OO/LO jest to jakoś bardziej skomplikowane niż w excelu.
Jeszcze raz wielkie dzięki.
Będę starał się to wszystko uruchomić choć widzę, że w OO/LO jest to jakoś bardziej skomplikowane niż w excelu.
Jeszcze raz wielkie dzięki.
LibreOffice 5 na Windows 10