Arkusze: Różnice pomiędzy wersjami

Z Henryk Dąbrowski
Przejdź do nawigacji Przejdź do wyszukiwania
 
 
(Nie pokazano 1 pośredniej wersji utworzonej przez tego samego użytkownika)
Linia 104: Linia 104:
  
  
[[LibreOffice Calc – makra | <b>LibreOffice Calc – makra</b>]]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[Henryk Dąbrowski | <b>Strona główna</b>]]
+
[[LibreOffice Calc – makra – przykłady | <b>LibreOffice Calc – makra – przykłady</b>]]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[[Henryk Dąbrowski | <b>Strona główna</b>]]
  
  

Aktualna wersja na dzień 15:21, 24 maj 2024

22.03.2020




Uchwyt do arkusza przez indeks, nazwa arkusza i zmiana nazwy arkusza

Sub Arkusz1()
    Dim sName as String
    Dim oSht  as Object
    'uchwyt do arkusza przez indeks; w tym przypadku uzyskujemy uchwyt do pierwszego arkusza:
    oSht = ThisComponent.getSheets().getByIndex(0)
    oSht.Name = "Test" 'zmiana nazwy arkusza
    sName = oSht.getName() 'uzyskanie nazwy arkusza
    MsgBox sName
End Sub



Uchwyt do arkusza przez nazwę, uaktywnienie arkusza

Sub Arkusz2()
    Dim sName as String
    Dim oSht as Object
    oSht = ThisComponent.getSheets().getByName("Test") 'uchwyt do arkusza przez nazwę
    ThisComponent.CurrentController.setActiveSheet( oSht ) 'mając uchwyt, możemy uczynić arkuszem aktywnym
End Sub



Uchwyt do aktywnego arkusza, liczba arkuszy w skoroszycie, uaktywnienie ostatniego arkusza

Sub Arkusz3()
    Dim n as Long
    Dim oSht as Object
    oSht = ThisComponent.getCurrentController().getActiveSheet() 'uchwyt do aktywnego arkusza
    MsgBox oSht.getName() 'nazwa aktywnego arkusza
    n = ThisComponent.getSheets().getCount() 'liczba arkuszy
    MsgBox n
    oSht = ThisComponent.getSheets().getByIndex(n - 1) 'uchwyt do ostatniego arkusza
    ThisComponent.CurrentController.setActiveSheet( oSht ) 'uaktywnienie ostatniego arkusza
End Sub



Sprawdzanie, czy arkusz o podanej nazwie istnieje, wstawianie nowego arkusza, kasowanie arkusza

Sub Arkusz4()
    Dim sNew, sOld as String
    sNew = "NowyArkusz"
    sOld = "StaryArkusz"
    If NOT ThisComponent.getSheets().hasByName( sNew ) Then 'sprawdza czy arkusz o podanej nazwie już istnieje
         ThisComponent.getSheets().insertNewByName( sNew, 2 ) 'wstawia nowy arkusz na pozycję 3 (z indeksem 2)
    End If
    If ThisComponent.getSheets().hasByName( sOld ) Then 'sprawdza czy arkusz istnieje
        ThisComponent.getSheets().removeByName( sOld ) 'kasuje arkusz o wskazanej nazwie
    End If
End Sub


Przeglądając powyższe procedury zauważamy, że wygodnie jest zdefiniować obiekt:
  oSheets = ThisComponent.getSheets()
bo skraca to kod procedur i czyni zapis bardziej przejrzystym. Obiekt oSheets jest uchwytem do skoroszytu, czyli do zbioru wszystkich arkuszy w dokumencie.


Wstawianie nowego arkusza, kopiowanie arkusza, kasowanie i przenoszenie arkusza

Sub Arkusz5()
    Dim oSheets as Object
    oSheets = ThisComponent.getSheets()
    oSheets.insertNewByName("Nowy", 1) 'wstawia nowy arkusz na pozycję 2
    MsgBox "Nowy arkusz został wstawiony"
    oSheets.copyByName("Nowy", "Nowy-kopia", 2) 'tworzymy kopię arkusza "Nowy" i wstawiamy ją na pozycję 3
    MsgBox "Kopia arkusza została utworzona"
    oSheets.removeByName("Nowy") 'kasujemy arkusz o nazwie "Nowy"
    MsgBox "Arkusz został skasowany"
    oSheets.moveByName("Nowy-kopia", 0) 'przenosimy arkusz na pozycję pierwszą
End Sub



Polecane strony internetowe

Więcej informacji Czytelnik znajdzie na stronach:

Macros - Basic reference - Calc - Sheets

Spreadsheet common – Working with sheets

The Structure of Spreadsheet Documents





LibreOffice Calc – makra – przykłady                   Strona główna