|
|
Linia 1: |
Linia 1: |
− | <div style="text-align:right; font-size: 130%; font-style: italic; font-weight: bold;">08.06.2021</div> | + | <div style="text-align:right; font-size: 130%; font-style: italic; font-weight: bold;">22.03.2020</div> |
| | | |
| | | |
Linia 6: |
Linia 6: |
| | | |
| | | |
− | Przedstawiamy niżej prosty, ale z pewnością użyteczny kod, który pozwoli użytkownikowi stworzyć terminarz obejmujący powtarzające się zadania oraz wydarzenia wypadające w ustalonych dniach roku. Kod składa się z pięciu podprogramów: funkcji MonthDays() i DzienTygodnia() oraz procedury RangeBorder() – te podprogramy zostały zdefiniowane wcześniej i Czytelnik może się z nimi łatwo zapoznać. Dodatkowo mamy procedurę główną Terminarz(), która określa, jak będzie budowany nasz terminarz i procedurę pomocniczą CellFormat(), która określa, jak zostanie sformatowana komórka, do której wpisujemy dane.
| + | Celem tej strony <b>nie jest</b> nauczenie kogokolwiek pisania makr w arkuszu LibreOffice. Tego typu strony Czytelnik łatwo znajdzie w sieci. Jeśli możemy o pewnej formie nauki mówić, to o nauce poprzez proste, dobrze objaśnione przykłady. Jednak taka forma nauki musi z konieczności zakładać pewne minimum wiedzy. Mam jedynie nadzieję, że strona ta pomoże osobom, które mają pewne pojęcie o programowaniu napisać własne, <b>proste</b> makra. To własnie takie makra są najczęściej potrzebne i uwalniają nas od żmudnej pracy z arkuszem. |
| | | |
| | | |
− | Wydarzenia wypadające w określonych dniach roku zostały zebrane w arkuszu o ustalonej nazwie „Dni” i nazwy tej nie należy zmieniać bez wprowadzenia odpowiedniej zmiany w kodzie procedury Terminarz(). Daty w kolumnie A arkusza „Dni", to kolejne dni dowolnego roku przestępnego. W kolumnie B wpisujemy tekst opisujący wydarzenie związane z określonym dniem miesiąca. Dla przykładu w kolumnie B zostały wpisane popularne imieniny i niektóre święta. Dane z arkusza „Dni” zostaną wpisane w tworzonym przez nas terminarzu w kolumnie F.
| + | Polecane strony: |
| | | |
| + | <b>LibreOffice</b> ([https://documentation.libreoffice.org/en/english-documentation/ LINK]) |
| | | |
− | <b>Przed uruchomieniem</b> procedury Terminarz() musimy ustalić i wpisać do jej kodu wartości trzech zmiennych: <b>Start</b>, <b>Koniec</b> oraz <b>k</b>. Zmienna Start (typu Date) określa pierwszy dzień od którego zacznie się budowanie terminarza, zaś zmienna k (typu Long) określa <b>indeks</b> wiersza, od którego rozpocznie się budowanie terminarza i do którego zostanie wpisana wartość zmiennej Start. Zmienna Koniec (typu Date) określa ostatni dzień, który zostanie uwzględniony w tworzonym terminarzu. Należy pamiętać, że terminarz zostanie utworzony w pierwszym arkuszu naszego skoroszytu, zatem skoroszyt poza arkuszem „Dni” musi mieć przynajmniej jeden dodatkowy arkusz. | + | <b>Apache OpenOffice BASIC Programming Guide</b> ([https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide LINK]) |
| | | |
| + | <b>Andrew Pitonyak</b> ([http://www.pitonyak.org/ LINK]) |
| | | |
− | Powtarzające się terminy można podzielić na takie, które wypadają w określonym dniu miesiąca i na takie, które wypadają w określonym dniu tygodnia. Sposoby badania, czy w danym dniu wypadają interesujące nas terminy, zostały pokazane w przykładowym kodzie procedury Terminarz(). Zdefiniowane przez nas terminy zostaną wpisane w utworzonym terminarzu w kolumnie D.
| |
| | | |
| | | |
− | Link do skoroszytu [https://henryk-dabrowski.pl/pliki/terminarz/Terminarz.ods Terminarz.ods]
| |
| | | |
− | <span style="color: green"><b><span style='color:#1f1c1b;'>Sub </span></b>Terminarz()
| + | *[[Zmienne]] |
− | <b><span style='color:#1f1c1b;'>Dim</span></b> Licz <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Long</span>, wiersz <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Long</span>, k <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Long</span>, t <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Long</span>, MonthEnd <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Long</span>
| + | *[[Tablice]] |
− | <b><span style='color:#1f1c1b;'>Dim</span></b> notatka <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>String</span>
| + | *[[Arkusze]] |
− | <b><span style='color:#1f1c1b;'>Dim</span></b> d <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Date</span>, Start <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Date</span>, Koniec <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Date</span>
| + | *[[Kolumny i wiersze]] |
− | <b><span style='color:#1f1c1b;'>Dim</span></b> oShtDni <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Object</span>, oSht <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Object</span>, oColumns <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Object</span>, oRow <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Object</span>, oCllA <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Object</span>, oCllB <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Object</span>
| + | *[[Komórki]] |
− | oShtDni <span style='color:#000080;'>=</span> ThisComponent.getSheets().getByName(<span style='color:#ff0000;'>"Dni"</span>) <span style='color:#707070;'>'uchwyt do arkusza o nazwie "Dni"</span>
| + | *[[Zakresy komórek]] |
− | oSht <span style='color:#000080;'>=</span> ThisComponent.getSheets.getByIndex(<span style='color:#ff0000;'>0</span>) <span style='color:#707070;'>'uchwyt do pierwszego arkusza</span>
| + | *[[Zakresy komórek – metody getData i getDataArray | Zakresy komórek – metody '''getData''' i '''getDataArray''']] |
− | ThisComponent.CurrentController.setActiveSheet(oSht) <span style='color:#707070;'>'aktywacja pierwszego arkusza</span>
| + | *[[Funkcje wbudowane, poradniki LibreOffice i inne linki]] |
− | Start <span style='color:#000080;'>=</span> <span style='color:#0095ff;'>DateSerial</span>(<span style='color:#ff0000;'>2021</span>, <span style='color:#ff0000;'>1</span>, <span style='color:#ff0000;'>1</span>) <span style='color:#707070;'>'początek terminarza</span>
| |
− | Koniec <span style='color:#000080;'>=</span> <span style='color:#0095ff;'>DateSerial</span>(<span style='color:#ff0000;'>2021</span>, <span style='color:#ff0000;'>12</span>, <span style='color:#ff0000;'>31</span>) <span style='color:#707070;'>'koniec terminarza</span>
| |
− | k <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>0</span> <span style='color:#707070;'>'UWAGA: k odpowiada indeksowi wiersza z datą Start</span>
| |
− | d <span style='color:#000080;'>=</span> Start
| |
− | <b><span style='color:#1f1c1b;'>Do While </span></b>d <= Koniec
| |
− | Licz <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>0</span> <span style='color:#707070;'>'zmienna Licz zlicza, ile wykonano wpisów pod tą samą datą w kolumnie D</span>
| |
− | t <span style='color:#000080;'>=</span> <span style='color:#0095ff;'>Weekday</span>(d) <span style='color:#707070;'>'niedziela-1, sobota-7</span>
| |
− | MonthEnd <span style='color:#000080;'>=</span> <span style='color:#0095ff;'>MonthDays</span>( <span style='color:#0095ff;'>Year</span>(d), <span style='color:#0095ff;'>Month</span>(d) )
| |
− | oRow <span style='color:#000080;'>=</span> oSht.getRows().getByIndex(k) <span style='color:#707070;'>'uchwyt do wiersza o indeksie k</span>
| |
− | oCllA <span style='color:#000080;'>=</span> oSht.getCellByPosition(<span style='color:#ff0000;'>0</span>, k) <span style='color:#707070;'>'uchwyt do komórki A wiersza o indeksie k</span>
| |
− | oCllB <span style='color:#000080;'>=</span> oSht.getCellByPosition(<span style='color:#ff0000;'>1</span>, k) <span style='color:#707070;'>'uchwyt do komórki B wiersza o indeksie k</span>
| |
− | oCllA.Value <span style='color:#000080;'>=</span> d
| |
− | <span style='color:#707070;'>'formatowanie komórki A:</span>
| |
− | oCllA.NumberFormat <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>36</span> <span style='color:#707070;'>'format daty: 31.12.1999</span>
| |
− | oCllA.VertJustify <span style='color:#000080;'>=</span> com.sun.star.table.CellVertJustify.CENTER <span style='color:#707070;'>'wyśrodkowanie tekstu w pionie</span>
| |
− |
| |
− | oCllB.<span style='color:#000080;'>String</span> <span style='color:#000080;'>=</span> <span style='color:#0095ff;'>DzienTygodnia</span>(d)
| |
− | <span style='color:#707070;'>'formatowanie komórki B:</span>
| |
− | oCllB.HoriJustify <span style='color:#000080;'>=</span> com.sun.star.table.CellHoriJustify.CENTER <span style='color:#707070;'>'wyśrodkowanie tekstu w poziomie</span>
| |
− | oCllB.VertJustify <span style='color:#000080;'>=</span> com.sun.star.table.CellVertJustify.CENTER <span style='color:#707070;'>'wyśrodkowanie tekstu w pionie</span>
| |
− |
| |
− | <b><span style='color:#1f1c1b;'>If </span></b>t <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>1</span> <b><span style='color:#1f1c1b;'>Then</span></b> <span style='color:#707070;'>'niedziela</span>
| |
− | oRow.CellBackColor <span style='color:#000080;'>=</span> <span style='color:#0095ff;'>RGB</span>(<span style='color:#ff0000;'>255</span>, <span style='color:#ff0000;'>0</span>, <span style='color:#ff0000;'>0</span>) <span style='color:#707070;'>'czerwony kolor tła wiersza</span>
| |
− | <b><span style='color:#1f1c1b;'>End If</span></b>
| |
− |
| |
− | <span style='color:#707070;'>'Informacja dotycząca wybranych dni roku z arkusza "Dni" (wpis w kolumnie F)</span>
| |
− | wiersz <span style='color:#000080;'>=</span> <span style='color:#0095ff;'>DateSerial</span>(<span style='color:#ff0000;'>2000</span>, <span style='color:#0095ff;'>Month</span>(d), <span style='color:#0095ff;'>Day</span>(d)) - <span style='color:#ff0000;'>36526</span> <span style='color:#707070;'>'indeks wiersza w arkuszu "Dni" z notatką odpowiadającą dacie d</span>
| |
− | notatka <span style='color:#000080;'>=</span> oShtDni.getCellByPosition(<span style='color:#ff0000;'>1</span>, wiersz).<span style='color:#000080;'>String</span>
| |
− | <b><span style='color:#1f1c1b;'>If </span></b>notatka <> <span style='color:#ff0000;'>""</span> <b><span style='color:#1f1c1b;'>Then</span></b>
| |
− | <b><span style='color:#000000;'>Call</span></b> CellFormat( oSht.getCellByPosition(<span style='color:#ff0000;'>5</span>, k), notatka, <span style='color:#0095ff;'>RGB</span>(<span style='color:#ff0000;'>204</span>, <span style='color:#ff0000;'>255</span>, <span style='color:#ff0000;'>204</span>) )
| |
− | <b><span style='color:#1f1c1b;'>End If</span></b>
| |
− |
| |
− | <span style='color:#707070;'>'Powtarzające się terminy - dotyczące dni miesiąca (wpis w kolumnie D)</span>
| |
− |
| |
− | <b><span style='color:#1f1c1b;'>If </span></b>Day(d) <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>7</span> <b><span style='color:#1f1c1b;'>Then</span></b>
| |
− | <b><span style='color:#000000;'>Call</span></b> CellFormat( oSht.getCellByPosition(<span style='color:#ff0000;'>3</span>, k + Licz), <span style='color:#ff0000;'>"Siódmy dzień miesiąca"</span>, <span style='color:#0095ff;'>RGB</span>(<span style='color:#ff0000;'>153</span>, <span style='color:#ff0000;'>204</span>, <span style='color:#ff0000;'>255</span>) )
| |
− | Licz <span style='color:#000080;'>=</span> Licz + <span style='color:#ff0000;'>1</span>
| |
− | <b><span style='color:#1f1c1b;'>End If</span></b>
| |
− |
| |
− | <span style='color:#707070;'>'Powtarzające się terminy - dotyczące dni tygodnia (wpis w kolumnie D)</span>
| |
− |
| |
− | <span style='color:#707070;'>'czwartek co dwa tygodnie począwszy od 07.01.2021</span>
| |
− | <b><span style='color:#1f1c1b;'>If </span></b>t <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>5</span> <b><span style='color:#000000;'>AND</span></b> (d - <span style='color:#0095ff;'>DateSerial</span>(<span style='color:#ff0000;'>2021</span>, <span style='color:#ff0000;'>1</span>, <span style='color:#ff0000;'>7</span>)) <b><span style='color:#000000;'>Mod</span></b> <span style='color:#ff0000;'>14</span> <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>0</span> <b><span style='color:#1f1c1b;'>Then</span></b>
| |
− | <b><span style='color:#000000;'>Call</span></b> CellFormat( oSht.getCellByPosition(<span style='color:#ff0000;'>3</span>, k + Licz), <span style='color:#ff0000;'>"Spotkanie w czwartek (co dwa tygodnie)"</span>, <span style='color:#0095ff;'>RGB</span>(<span style='color:#ff0000;'>204</span>, <span style='color:#ff0000;'>204</span>, <span style='color:#ff0000;'>204</span>) )
| |
− | Licz <span style='color:#000080;'>=</span> Licz + <span style='color:#ff0000;'>1</span>
| |
− | <b><span style='color:#1f1c1b;'>End If</span></b>
| |
− |
| |
− | <span style='color:#707070;'>'pierwszy czwartek miesiąca</span>
| |
− | <b><span style='color:#1f1c1b;'>If </span></b>t <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>5</span> <b><span style='color:#000000;'>AND</span></b> <span style='color:#0095ff;'>Day</span>(d) >= <span style='color:#ff0000;'>1</span> <b><span style='color:#000000;'>AND</span></b> <span style='color:#0095ff;'>Day</span>(d) <= <span style='color:#ff0000;'>7</span> <b><span style='color:#1f1c1b;'>Then</span></b>
| |
− | <b><span style='color:#000000;'>Call</span></b> CellFormat( oSht.getCellByPosition(<span style='color:#ff0000;'>3</span>, k + Licz), <span style='color:#ff0000;'>"Pierwszy czwartek miesiąca"</span>, <span style='color:#0095ff;'>RGB</span>(<span style='color:#ff0000;'>255</span>, <span style='color:#ff0000;'>255</span>, <span style='color:#ff0000;'>204</span>) )
| |
− | Licz <span style='color:#000080;'>=</span> Licz + <span style='color:#ff0000;'>1</span>
| |
− | <b><span style='color:#1f1c1b;'>End If</span></b>
| |
− |
| |
− | <span style='color:#707070;'>'ostatni czwartek miesiąca</span>
| |
− | <b><span style='color:#1f1c1b;'>If </span></b>t <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>5</span> <b><span style='color:#000000;'>AND</span></b> <span style='color:#0095ff;'>Day</span>(d) >= MonthEnd-<span style='color:#ff0000;'>6</span> <b><span style='color:#000000;'>AND</span></b> <span style='color:#0095ff;'>Day</span>(d) <= MonthEnd <b><span style='color:#1f1c1b;'>Then</span></b>
| |
− | <b><span style='color:#000000;'>Call</span></b> CellFormat( oSht.getCellByPosition(<span style='color:#ff0000;'>3</span>, k + Licz), <span style='color:#ff0000;'>"Ostatni czwartek miesiąca"</span>, <span style='color:#0095ff;'>RGB</span>(<span style='color:#ff0000;'>123</span>, <span style='color:#ff0000;'>204</span>, <span style='color:#ff0000;'>153</span>) )
| |
− | Licz <span style='color:#000080;'>=</span> Licz + <span style='color:#ff0000;'>1</span>
| |
− | <b><span style='color:#1f1c1b;'>End If</span></b>
| |
− |
| |
− | <span style='color:#707070;'>'Końcowe formatowanie wpisu - scalanie komórek</span>
| |
− | <b><span style='color:#1f1c1b;'>If </span></b>Licz > <span style='color:#ff0000;'>1</span> <b><span style='color:#1f1c1b;'>Then</span></b>
| |
− | oSht.getCellRangeByPosition(<span style='color:#ff0000;'>0</span>, k, <span style='color:#ff0000;'>0</span>, k + Licz - <span style='color:#ff0000;'>1</span>).merge(True) <span style='color:#707070;'>'scalamy komórki w kolumnach: A,B,C,E,F,G,H</span>
| |
− | oSht.getCellRangeByPosition(<span style='color:#ff0000;'>1</span>, k, <span style='color:#ff0000;'>1</span>, k + Licz - <span style='color:#ff0000;'>1</span>).merge(True)
| |
− | oSht.getCellRangeByPosition(<span style='color:#ff0000;'>2</span>, k, <span style='color:#ff0000;'>2</span>, k + Licz - <span style='color:#ff0000;'>1</span>).merge(True)
| |
− | oSht.getCellRangeByPosition(<span style='color:#ff0000;'>4</span>, k, <span style='color:#ff0000;'>4</span>, k + Licz - <span style='color:#ff0000;'>1</span>).merge(True)
| |
− | oSht.getCellRangeByPosition(<span style='color:#ff0000;'>5</span>, k, <span style='color:#ff0000;'>5</span>, k + Licz - <span style='color:#ff0000;'>1</span>).merge(True)
| |
− | oSht.getCellRangeByPosition(<span style='color:#ff0000;'>6</span>, k, <span style='color:#ff0000;'>6</span>, k + Licz - <span style='color:#ff0000;'>1</span>).merge(True)
| |
− | oSht.getCellRangeByPosition(<span style='color:#ff0000;'>7</span>, k, <span style='color:#ff0000;'>7</span>, k + Licz - <span style='color:#ff0000;'>1</span>).merge(True)
| |
− | k <span style='color:#000080;'>=</span> k + Licz
| |
− | <b><span style='color:#1f1c1b;'>Else</span></b>
| |
− | k <span style='color:#000080;'>=</span> k + <span style='color:#ff0000;'>1</span>
| |
− | <b><span style='color:#1f1c1b;'>End If</span></b>
| |
− | d <span style='color:#000080;'>=</span> d + <span style='color:#ff0000;'>1</span>
| |
− | <b><span style='color:#1f1c1b;'>Loop</span></b>
| |
− |
| |
− | oColumns <span style='color:#000080;'>=</span> oSht.getColumns() <span style='color:#707070;'>'uchwyt do kolumn pierwszego arkusza</span>
| |
− | oColumns.getByIndex(<span style='color:#ff0000;'>2</span>).Width <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>500</span> <span style='color:#707070;'>'szerokość kolumny C - 5 mm</span>
| |
− | oColumns.getByIndex(<span style='color:#ff0000;'>3</span>).Width <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>7000</span> <span style='color:#707070;'>'szerokość kolumny D - 70 mm</span>
| |
− | oColumns.getByIndex(<span style='color:#ff0000;'>4</span>).Width <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>1500</span> <span style='color:#707070;'>'szerokość kolumny E - 15 mm</span>
| |
− | oColumns.getByIndex(<span style='color:#ff0000;'>5</span>).Width <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>7000</span> <span style='color:#707070;'>'szerokość kolumny F - 70 mm</span>
| |
− | oColumns.getByIndex(<span style='color:#ff0000;'>6</span>).Width <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>1500</span> <span style='color:#707070;'>'szerokość kolumny G - 15 mm</span>
| |
− | oColumns.getByIndex(<span style='color:#ff0000;'>7</span>).Width <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>7000</span> <span style='color:#707070;'>'szerokość kolumny H - 70 mm</span>
| |
− | MsgBox <span style='color:#ff0000;'>"Ukończono!"</span>
| |
− | <b><span style='color:#1f1c1b;'>End Sub</span></b></span>
| |
| | | |
− | <span style="color: green"><b><span style='color:#1f1c1b;'>Sub </span></b>CellFormat(oCll <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Object</span>, CellString <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>String</span>, CellColor <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Long</span>)
| |
− | <b><span style='color:#1f1c1b;'>Dim</span></b> CellRow <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Long</span>
| |
− | CellRow <span style='color:#000080;'>=</span> oCll.getCellAddress().Row
| |
− | oCll.Spreadsheet.getRows().getByIndex(CellRow).Height <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>1000</span> <span style='color:#707070;'>'ustawia wysokość wiersza równą 10 mm</span>
| |
− | oCll.<span style='color:#000080;'>String</span> <span style='color:#000080;'>=</span> CellString <span style='color:#707070;'>'wpisuje tekst</span>
| |
− | oCll.CellBackColor <span style='color:#000080;'>=</span> CellColor <span style='color:#707070;'>'ustawia kolor tła komórki</span>
| |
− | oCll.CharHeight <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>11</span> <span style='color:#707070;'>'rozmiar czcionki</span>
| |
− | oCll.CharWeight <span style='color:#000080;'>=</span> com.sun.star.awt.FontWeight.NORMAL <span style='color:#707070;'>'zwykła czcionka</span>
| |
− | oCll.setPropertyValue( <span style='color:#ff0000;'>"IsTextWrapped"</span>, True ) <span style='color:#707070;'>'zawija tekst automatycznie</span>
| |
− | oCll.HoriJustify <span style='color:#000080;'>=</span> com.sun.star.table.CellHoriJustify.CENTER <span style='color:#707070;'>'wyśrodkowanie tekstu w poziomie</span>
| |
− | oCll.VertJustify <span style='color:#000080;'>=</span> com.sun.star.table.CellVertJustify.CENTER <span style='color:#707070;'>'wyśrodkowanie tekstu w pionie</span>
| |
− | <b><span style='color:#000000;'>Call</span></b> RangeBorder(oCll, <span style='color:#0095ff;'>RGB</span>(<span style='color:#ff0000;'>0</span>, <span style='color:#ff0000;'>0</span>, <span style='color:#ff0000;'>0</span>), <span style='color:#ff0000;'>0</span>, <span style='color:#ff0000;'>26</span>) <span style='color:#707070;'>'obramowanie komórki</span>
| |
− | <b><span style='color:#1f1c1b;'>End Sub</span></b></span>
| |
| | | |
− | <span style="color: green"><b><span style='color:#1f1c1b;'>Function </span></b>MonthDays(myYear <b><span style='color:#1f1c1b;'>As</span></b> <span style='color:#000080;'>Long</span>, myMonth <b><span style='color:#1f1c1b;'>As</span></b> <span style='color:#000080;'>Long</span>) <b><span style='color:#1f1c1b;'>As</span></b> <span style='color:#000080;'>Long</span>
| + | Przykłady własnych funkcji i procedur |
− | <span style='color:#707070;'>'znajduje liczbę dni w miesiącu danego roku</span>
| + | *[[Funkcje arkusza]] |
− | <b><span style='color:#1f1c1b;'>If </span></b>myMonth <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>12</span> <b><span style='color:#1f1c1b;'>Then</span></b>
| + | *[[Funkcje tekstowe]] |
− | MonthDays <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>31</span>
| + | *[[Funkcje liczbowe]] |
− | <b><span style='color:#1f1c1b;'>Else</span></b>
| + | *[[Funkcje informacyjne]] |
− | MonthDays <span style='color:#000080;'>=</span> <span style='color:#0095ff;'>Day</span>(DateSerial(myYear, myMonth + <span style='color:#ff0000;'>1</span>, <span style='color:#ff0000;'>1</span>) - <span style='color:#ff0000;'>1</span>)
| + | *[[Funkcje daty i czasu]] |
− | <b><span style='color:#1f1c1b;'>End If</span></b>
| + | *[[Funkcje tablicowe]] |
− | <b><span style='color:#1f1c1b;'>End Function</span></b></span>
| + | *[[Funkcje komórki]] |
− | | + | *[[Funkcje zakresu komórek]] |
− | <span style="color: green"><b><span style='color:#1f1c1b;'>Function </span></b>DzienTygodnia(Dzien <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Date</span>) <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>String</span>
| + | *[[Sortowanie zakresu komórek]] |
− | <span style='color:#707070;'>'funkcja zwraca nazwę dnia tygodnia</span>
| + | *[[Wykresy]] |
− | <b><span style='color:#1f1c1b;'>Dim</span></b> aNazwy() <span style='color:#707070;'>'deklaracja pustej tablicy</span>
| |
− | <span style='color:#707070;'>'funkcja <span style='color:#0095ff;'>Array</span>() tworzy tablicę typu Variant i numeruje elementy od 0</span>
| |
− | aNazwy <span style='color:#000080;'>=</span> <span style='color:#0095ff;'>Array</span>(<span style='color:#ff0000;'>"niedziela"</span>, <span style='color:#ff0000;'>"poniedziałek"</span>, <span style='color:#ff0000;'>"wtorek"</span>, <span style='color:#ff0000;'>"środa"</span>, <span style='color:#ff0000;'>"czwartek"</span>, <span style='color:#ff0000;'>"piątek"</span>, <span style='color:#ff0000;'>"sobota"</span>)
| |
− | DzienTygodnia <span style='color:#000080;'>=</span> aNazwy( <span style='color:#0095ff;'>Weekday</span>(Dzien) - <span style='color:#ff0000;'>1</span> )
| |
− | <b><span style='color:#1f1c1b;'>End Function</span></b></span>
| |
− | | |
− | <span style="color: green"><b><span style='color:#1f1c1b;'>Sub </span></b>RangeBorder(oRng <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Object</span>, LColor <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Long</span>, LStyle <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Long</span>, LWidth <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Long</span>)
| |
− | <span style='color:#707070;'>'LStyle: 0-ciągła, 1-kropkowana, 2-przerywana, 3-podwójna, ... ([https://api.libreoffice.org/docs/idl/ref/namespacecom_1_1sun_1_1star_1_1table_1_1BorderLineStyle.html LINK])</span>
| |
− | <b><span style='color:#1f1c1b;'>Dim</span></b> oBorder <b><span style='color:#1f1c1b;'>as</span></b> New com.sun.star.table.BorderLine2
| |
− | oBorder.<b><span style='color:#000000;'>Color</span></b> <span style='color:#000080;'>=</span> LColor
| |
− | oBorder.LineStyle <span style='color:#000080;'>=</span> LStyle
| |
− | <b><span style='color:#1f1c1b;'>If </span></b>LStyle <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>3</span> <b><span style='color:#1f1c1b;'>Then</span></b> <span style='color:#707070;'>'DOUBLE</span>
| |
− | <span style='color:#707070;'>'InnerLineWidth - szerokość linii wewnętrznej w 1/100 mm (gdy równa zero, rysowana jest tylko jedna linia)</span>
| |
− | <span style='color:#707070;'>'LineDistance - odległość między linią wewnętrzną i linią zewnętrzną w 1/100 mm</span>
| |
− | <span style='color:#707070;'>'OuterLineWidth - szerokość pojedynczej linii lub szerokość linii zewnętrznej w 1/100 mm</span>
| |
− | <span style='color:#707070;'>'(gdy równa zero, żadna linia nie jest rysowana)</span>
| |
− | oBorder.InnerLineWidth <span style='color:#000080;'>=</span> LWidth
| |
− | oBorder.LineDistance <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>2</span> * LWidth
| |
− | oBorder.OuterLineWidth <span style='color:#000080;'>=</span> LWidth
| |
− | <b><span style='color:#1f1c1b;'>Else</span></b>
| |
− | <span style='color:#707070;'>'LineWidth - szerokość linii w 1/100 mm (gdy równa zero, żadna linia nie jest rysowana)</span>
| |
− | <span style='color:#707070;'>'szerokość linii możemy ustawić dla LStyle <span style='color:#000080;'>=</span> 0, 1, 2, 14, 16, 17</span>
| |
− | oBorder.LineWidth <span style='color:#000080;'>=</span> LWidth
| |
− | <b><span style='color:#1f1c1b;'>End If</span></b>
| |
− | <b><span style='color:#1f1c1b;'>With </span></b>oRng
| |
− | .TopBorder <span style='color:#000080;'>=</span> oBorder
| |
− | .RightBorder <span style='color:#000080;'>=</span> oBorder
| |
− | .BottomBorder <span style='color:#000080;'>=</span> oBorder
| |
− | .LeftBorder <span style='color:#000080;'>=</span> oBorder
| |
− | <b><span style='color:#1f1c1b;'>End With</span></b>
| |
− | <b><span style='color:#1f1c1b;'>End Sub</span></b></span>
| |
− | | |
− | | |
− | | |
− | | |
− | | |
− | | |
− | | |
− | | |
− | | |
− | [[LibreOffice Calc – makra | <b>LibreOffice Calc – makra</b>]] [[Henryk Dąbrowski | <b>Strona główna</b>]] | |
| | | |
| | | |
| + | Przykłady bardziej złożonych procedur |
| + | *[[Terminarz]] |
| + | *[[Funkcje rzeczywiste]] |
| | | |
| | | |