Różnica pomiędzy stronami "Zakresy komórek – metody getData i getDataArray" i "Funkcje wbudowane, poradniki LibreOffice i inne linki"

Z Henryk Dąbrowski
(Różnica między stronami)
Przejdź do nawigacji Przejdź do wyszukiwania
 
m (1 wersja)
 
Linia 1: Linia 1:
<div style="text-align:right; font-size: 130%; font-style: italic; font-weight: bold;">02.08.2020</div>
+
<div style="text-align:right; font-size: 130%; font-style: italic; font-weight: bold;">11.07.2020</div>
  
  
Linia 5: Linia 5:
  
  
== Szybkość operowania danymi zapisanymi w komórkach i danymi zapisanymi w tablicy ==
+
== Uwagi ==
  
Prosty przykład pokaże nam różnicę między operowaniem na komórkach z&nbsp;zakresu komórek i&nbsp;na tablicy danych utworzonych z&nbsp;zakresu komórek. Zauważmy, że zmienna oRngData jest tablicą tablic, przykładowo mamy:<br/>
+
[[Co zrobić, jeśli funkcja jest dostępna w arkuszu, ale nie jest dostępna w makrach?]]
oRngData(0)(1) oznacza pierwszą tablicę w&nbsp;tablicy tablic oRngData i&nbsp;drugi element w&nbsp;tej pierwszej tablicy<br/>
 
oRngData(0)(2) oznacza pierwszą tablicę w&nbsp;tablicy tablic oRngData i&nbsp;trzeci element w&nbsp;tej pierwszej tablicy itd.<br/>
 
W przedstawionym niżej przykładzie operujemy na danych liczbowych – dalsze przykłady pokażą dlaczego i&nbsp;jakie ma to znaczenie.
 
  
<span style="color: green"><b><span style='color:#1f1c1b;'>Sub </span></b>ZakresyGetData1()
 
    <b><span style='color:#1f1c1b;'>Dim</span></b> oSht <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Object</span>, oRngA <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Object</span>, oRngB <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Object</span>, oRngC <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Object</span>
 
    <b><span style='color:#1f1c1b;'>Dim</span></b> oRngData() <span style='color:#707070;'>'tablica zawierająca dane</span>
 
    <b><span style='color:#1f1c1b;'>Dim</span></b> r <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Long</span>
 
    <b><span style='color:#1f1c1b;'>Dim</span></b> t <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Date</span>, d1 <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Date</span>, d2 <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Date</span>, d3 <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Date</span>
 
    oSht <span style='color:#000080;'>=</span> ThisComponent.getSheets().getByIndex(<span style='color:#ff0000;'>0</span>) <span style='color:#707070;'>'uchwyt do pierwszego arkusza</span>
 
    oRngA <span style='color:#000080;'>=</span> oSht.getCellRangeByName(<span style='color:#ff0000;'>&quot;A1:A100000&quot;</span>) <span style='color:#707070;'>'uchwyt do zakresu komórek</span>
 
    oRngB <span style='color:#000080;'>=</span> oSht.getCellRangeByName(<span style='color:#ff0000;'>&quot;B1:B100000&quot;</span>) <span style='color:#707070;'>'uchwyt do zakresu komórek</span>
 
    oRngC <span style='color:#000080;'>=</span> oSht.getCellRangeByName(<span style='color:#ff0000;'>&quot;C1:C100000&quot;</span>) <span style='color:#707070;'>'uchwyt do zakresu komórek</span>
 
   
 
    <span style='color:#707070;'>'wypełniamy 100000 komórek kolumny A liczbami losowymi z przedziału [0,1) i mierzymy czas tej operacji</span>
 
    t <span style='color:#000080;'>=</span> <span style='color:#0095ff;'>Now</span>() <span style='color:#707070;'>'można też wykorzystać funkcję Timer()</span>
 
    <b><span style='color:#1f1c1b;'>For </span></b>r <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>0</span> <b><span style='color:#1f1c1b;'>To</span></b> <span style='color:#ff0000;'>99999</span>
 
        oRngA.getCellByPosition(<span style='color:#ff0000;'>0</span>, r).Value <span style='color:#000080;'>=</span> <span style='color:#0095ff;'>Rnd</span>()
 
    <b><span style='color:#1f1c1b;'>Next </span></b>r
 
    d1 <span style='color:#000080;'>=</span> <span style='color:#0095ff;'>Now</span>() - t <u><span style='color:#707070;'>'ok. 90 sekund</span></u>
 
   
 
    <span style='color:#707070;'>'wypełniamy 100000 komórek kolumny B podwojonymi wartościami z kolumny A i mierzymy czas tej operacji</span>
 
    t <span style='color:#000080;'>=</span> <span style='color:#0095ff;'>Now</span>() <span style='color:#707070;'>'można też wykorzystać funkcję Timer()</span>
 
    <b><span style='color:#1f1c1b;'>For </span></b>r <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>0</span> <b><span style='color:#1f1c1b;'>To</span></b> <span style='color:#ff0000;'>99999</span>
 
        oRngB.getCellByPosition(<span style='color:#ff0000;'>0</span>, r).Value <span style='color:#000080;'>=</span> oRngA.getCellByPosition(<span style='color:#ff0000;'>0</span>, r).Value * <span style='color:#ff0000;'>2</span>
 
    <b><span style='color:#1f1c1b;'>Next </span></b>r
 
    d2 <span style='color:#000080;'>=</span> <span style='color:#0095ff;'>Now</span>() - t <u><span style='color:#707070;'>'ok. 100 sekund</span></u>
 
       
 
    <span style='color:#707070;'>'wypełniamy 100000 komórek kolumny C podwojonymi wartościami z kolumny A i mierzymy czas tej operacji</span>
 
    <span style='color:#707070;'>'tym razem wykorzystamy metodę '''getDataArray'''</span>
 
    t <span style='color:#000080;'>=</span> <span style='color:#0095ff;'>Now</span>()
 
    <span style='color:#707070;'>'pobieramy dane z zakresu komórek do tablicy</span>
 
    oRngData <span style='color:#000080;'>=</span> oRngA.getDataArray() <span style='color:#707070;'>'oRngData jest tablicą tablic</span>
 
    <b><span style='color:#1f1c1b;'>For </span></b>r <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>0</span> <b><span style='color:#1f1c1b;'>To</span></b> <span style='color:#ff0000;'>99999</span>
 
        oRngData(r)(<span style='color:#ff0000;'>0</span>) <span style='color:#000080;'>=</span> oRngData(r)(<span style='color:#ff0000;'>0</span>) * <span style='color:#ff0000;'>2</span>
 
    <b><span style='color:#1f1c1b;'>Next </span></b>r
 
    <span style='color:#707070;'>'wpisujemy dane z tablicy do zakresu komórek</span>
 
    oRngC.setDataArray(oRngData)
 
    d3 <span style='color:#000080;'>=</span> <span style='color:#0095ff;'>Now</span>() - t <u><span style='color:#707070;'>'ok. 2 sekund</span></u>
 
    MsgBox <span style='color:#ff0000;'>&quot;Czas: d1=&quot;</span> <span style='color:#000080;'>&amp;</span> d1 <span style='color:#000080;'>&amp;</span> <span style='color:#ff0000;'>&quot;  d2=&quot;</span> <span style='color:#000080;'>&amp;</span> d2 <span style='color:#000080;'>&amp;</span> <span style='color:#ff0000;'>&quot;  d3=&quot;</span> <span style='color:#000080;'>&amp;</span> d3
 
<b><span style='color:#1f1c1b;'>End Sub</span></b></span>
 
  
  
  
  
 +
== Libreoffice.org ==
  
== Uwagi do metod: '''getDataArray''' i '''setDataArray''' ==
+
[https://help.libreoffice.org/latest/pl/text/shared/05/new_help.html The LibreOffice Help]
  
Korzystając z metod '''getDataArray''' i '''setDataArray''' musimy pamiętać o&nbsp;tym, że możemy operować jedynie na danych liczbowych i&nbsp;tekstowych. Niedopuszczalne są wartości logiczne i&nbsp;wartości typu data.
+
[https://help.libreoffice.org/6.4/pl/text/sbasic/shared/01020300.html Korzystanie z procedur i funkcji]<br/>
 +
[https://help.libreoffice.org/latest/pl/text/sbasic/shared/01020300.html Korzystanie z procedur i funkcji]
  
<span style="color: green"><b><span style='color:#1f1c1b;'>Sub </span></b>ZakresyGetData2()
+
[https://help.libreoffice.org/latest/pl/text/sbasic/shared/03080601.html Alfabetyczny spis funkcji, instrukcji i operatorów]
    <b><span style='color:#1f1c1b;'>Dim</span></b> oSht <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Object</span>, oRng <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Object</span>
 
    <b><span style='color:#1f1c1b;'>Dim</span></b> oRngData() <span style='color:#707070;'>'tablica zawierająca dane</span>
 
    oSht <span style='color:#000080;'>=</span> ThisComponent.getSheets().getByIndex(<span style='color:#ff0000;'>0</span>) <span style='color:#707070;'>'uchwyt do pierwszego arkusza</span>
 
    oRng <span style='color:#000080;'>=</span> oSht.getCellRangeByName(<span style='color:#ff0000;'>&quot;A1:A5&quot;</span>) <span style='color:#707070;'>'uchwyt do zakresu komórek</span>
 
    oRngData <span style='color:#000080;'>=</span> oRng.getDataArray() <span style='color:#707070;'>'pobieramy dane z zakresu komórek do tablicy tablic</span>
 
       
 
    oRngData(<span style='color:#ff0000;'>0</span>)(<span style='color:#ff0000;'>0</span>) <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>3.14</span>
 
    oRngData(<span style='color:#ff0000;'>1</span>)(<span style='color:#ff0000;'>0</span>) <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>128</span>
 
    oRngData(<span style='color:#ff0000;'>2</span>)(<span style='color:#ff0000;'>0</span>) <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>&quot;abcd&quot;</span>
 
    <span style='color:#707070;'>'oRngData(3)(0) <span style='color:#000080;'>=</span> IsNumeric(&quot;abcd&quot;) 'spowoduje błąd metody '''setDataArray'''</span>
 
    <span style='color:#707070;'>'oRngData(4)(0) <span style='color:#000080;'>=</span> DateSerial(2000, 12, 31) 'spowoduje błąd metody '''setDataArray'''</span>
 
       
 
    oRng.setDataArray(oRngData) <span style='color:#707070;'>'wpisujemy dane z tablicy do zakresu komórek</span>
 
<b><span style='color:#1f1c1b;'>End Sub</span></b></span>
 
  
 +
[https://help.libreoffice.org/latest/pl/text/sbasic/shared/03010000.html Funkcje, twierdzenia i operatory]
  
 +
::[https://help.libreoffice.org/latest/pl/text/sbasic/shared/03030000.html Funkcje daty i czasu]
  
 +
::[https://help.libreoffice.org/latest/pl/text/sbasic/shared/03060000.html Operatory logiczne]
  
 +
::[https://help.libreoffice.org/latest/pl/text/sbasic/shared/03070000.html Operatory matematyczne]
  
== Uwagi do metod: '''getData''' i '''setData''' ==
+
::[https://help.libreoffice.org/latest/pl/text/sbasic/shared/03080000.html Funkcje numeryczne]
  
Korzystając z metod '''getData''' i '''setData''' musimy pamiętać o&nbsp;tym, że możemy operować jedynie na danych liczbowych. W&nbsp;tym przypadku wpisanie do tablicy wartości logicznych i&nbsp;typu data spowoduje zapisanie odpowiadających tym wartościom liczb, a&nbsp;przypisany tekst zostanie pominięty i&nbsp;zostanie wpisana liczba zero.  
+
::[https://help.libreoffice.org/latest/pl/text/sbasic/shared/03100000.html Zmienne]
  
<span style="color: green"><b><span style='color:#1f1c1b;'>Sub </span></b>ZakresyGetData3()
+
::[https://help.libreoffice.org/latest/pl/text/sbasic/shared/03110100.html Operatory porównania]
    <b><span style='color:#1f1c1b;'>Dim</span></b> oSht <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Object</span>, oRng <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Object</span>
 
    <b><span style='color:#1f1c1b;'>Dim</span></b> oRngData() <span style='color:#707070;'>'tablica zawierająca dane</span>
 
    oSht <span style='color:#000080;'>=</span> ThisComponent.getSheets().getByIndex(<span style='color:#ff0000;'>0</span>) <span style='color:#707070;'>'uchwyt do pierwszego arkusza</span>
 
    oRng <span style='color:#000080;'>=</span> oSht.getCellRangeByName(<span style='color:#ff0000;'>&quot;A1:E1&quot;</span>) <span style='color:#707070;'>'uchwyt do zakresu komórek</span>
 
    oRngData <span style='color:#000080;'>=</span> oRng.getData() <span style='color:#707070;'>'pobieramy dane z zakresu komórek do tablicy tablic</span>
 
   
 
    oRngData(<span style='color:#ff0000;'>0</span>)(<span style='color:#ff0000;'>0</span>) <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>3.14</span>
 
    oRngData(<span style='color:#ff0000;'>0</span>)(<span style='color:#ff0000;'>1</span>) <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>128</span>
 
    oRngData(<span style='color:#ff0000;'>0</span>)(<span style='color:#ff0000;'>2</span>) <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>&quot;abcd&quot;</span>
 
    oRngData(<span style='color:#ff0000;'>0</span>)(<span style='color:#ff0000;'>3</span>) <span style='color:#000080;'>=</span> <span style='color:#0095ff;'>IsNumeric</span>(<span style='color:#ff0000;'>&quot;128&quot;</span>)
 
    oRngData(<span style='color:#ff0000;'>0</span>)(<span style='color:#ff0000;'>4</span>) <span style='color:#000080;'>=</span> <span style='color:#0095ff;'>DateSerial</span>(<span style='color:#ff0000;'>2000</span>, <span style='color:#ff0000;'>12</span>, <span style='color:#ff0000;'>31</span>)
 
   
 
    oRng.setData(oRngData) <span style='color:#707070;'>'wpisujemy dane z tablicy do zakresu komórek</span>
 
<b><span style='color:#1f1c1b;'>End Sub</span></b></span>
 
  
 +
::[https://help.libreoffice.org/latest/pl/text/sbasic/shared/03120000.html Łańcuchy]
  
 +
[https://help.libreoffice.org/latest/pl/text/sbasic/shared/01030300.html Debugowanie programu Basic]
  
 +
[https://help.libreoffice.org/latest/pl/text/scalc/01/04060100.html Funkcje (dostępne w arkuszu) według kategorii]
  
 +
::[https://help.libreoffice.org/latest/pl/text/scalc/01/04060102.html Funkcje daty i godziny]
  
== Przykłady ==
+
::[https://help.libreoffice.org/latest/pl/text/scalc/01/04060106.html Funkcje matematyczne]
  
<span style="color: green"><b><span style='color:#1f1c1b;'>Sub </span></b>ZakresyGetData4()
+
::[https://help.libreoffice.org/latest/pl/text/scalc/01/04060108.html Funkcje statystyczne]
    <span style='color:#707070;'>'pobieranie danych z zakresu komórek do tablicy i wpisywanie danych z tablicy do zakresu komórek</span>
 
    <b><span style='color:#1f1c1b;'>Dim</span></b> oSht <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Object</span>, oRng <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Object</span>
 
    <b><span style='color:#1f1c1b;'>Dim</span></b> c <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Long</span>, r <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Long</span>
 
    <b><span style='color:#1f1c1b;'>Dim</span></b> oRngData() <span style='color:#707070;'>'tablica zawierająca dane</span>
 
    oSht <span style='color:#000080;'>=</span> ThisComponent.getSheets().getByIndex(<span style='color:#ff0000;'>0</span>) <span style='color:#707070;'>'uchwyt do pierwszego arkusza</span>
 
    oRng <span style='color:#000080;'>=</span> oSht.getCellRangeByName(<span style='color:#ff0000;'>&quot;B2:D9&quot;</span>) <span style='color:#707070;'>'uchwyt do zakresu komórek</span>
 
    oRngData <span style='color:#000080;'>=</span> oRng.getDataArray() <span style='color:#707070;'>'pobieramy dane z zakresu komórek do tablicy</span>
 
   
 
    <b><span style='color:#1f1c1b;'>For </span></b>r <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>0</span> <b><span style='color:#1f1c1b;'>To</span></b> <span style='color:#0095ff;'>UBound</span>( oRngData() ) <span style='color:#707070;'>'r przebiega wiersze zakresu komórek &quot;B2:D9&quot;</span>
 
        <b><span style='color:#1f1c1b;'>For </span></b>c <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>0</span> <b><span style='color:#1f1c1b;'>To</span></b> <span style='color:#0095ff;'>UBound</span>( oRngData(<span style='color:#ff0000;'>0</span>) ) <span style='color:#707070;'>'c przebiega kolumny zakresu komórek &quot;B2:D9&quot;</span>
 
            oRngData(r)(c) <span style='color:#000080;'>=</span> c <span style='color:#000080;'>&amp;</span> r
 
        <b><span style='color:#1f1c1b;'>Next </span></b>c
 
    <b><span style='color:#1f1c1b;'>Next </span></b>r
 
   
 
    oRng.setDataArray(oRngData) <span style='color:#707070;'>'wpisujemy dane z tablicy do zakresu komórek</span>
 
<b><span style='color:#1f1c1b;'>End Sub</span></b></span>
 
  
 +
::[https://help.libreoffice.org/latest/pl/text/scalc/01/04060110.html Funkcje tekstowe]
  
Omówione wyżej metody możemy wykorzystać do kopiowania danych:
 
  
<span style="color: green"><b><span style='color:#1f1c1b;'>Sub </span></b>ZakresyGetData5()
 
    <span style='color:#707070;'>'kopiowanie danych (tylko liczby i tekst)</span>
 
    <b><span style='color:#1f1c1b;'>Dim</span></b> oRng1 <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Object</span>, oRng2 <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Object</span>
 
    <span style='color:#707070;'>'uchwyt do zakresu komórek &quot;B2:D9&quot; w pierwszym arkuszu</span>
 
    oRng1 <span style='color:#000080;'>=</span> ThisComponent.getSheets().getByIndex(<span style='color:#ff0000;'>0</span>).getCellRangeByName(<span style='color:#ff0000;'>&quot;B2:D9&quot;</span>)
 
    <span style='color:#707070;'>'uchwyt do zakresu komórek &quot;B2:D9&quot; w drugim arkuszu</span>
 
    oRng2 <span style='color:#000080;'>=</span> ThisComponent.getSheets().getByIndex(<span style='color:#ff0000;'>1</span>).getCellRangeByName(<span style='color:#ff0000;'>&quot;B2:D9&quot;</span>)
 
    <span style='color:#707070;'>'kopiowanie</span>
 
    oRng2.setDataArray( oRng1.getDataArray() )
 
<b><span style='color:#1f1c1b;'>End Sub</span></b></span>
 
  
  
  
 +
== Poradniki (PDF) ==
  
 +
[https://documentation.libreoffice.org/assets/Uploads/Documentation/en/MACROS/RefCards/LibOBasic-1-IDE-Flat-Letter-EN-v102.pdf LibreOffice Basic IDE (Integrated Development Environment)]
  
== Porównanie metod '''getData()''' i '''getDataArray()''' ==
+
[https://documentation.libreoffice.org/assets/Uploads/Documentation/en/MACROS/RefCards/LibOBasic-2-Overview-Flat-Letter-EN-v110.pdf LibreOffice Basic Overview]
  
Należy zauważyć, że:
+
[https://documentation.libreoffice.org/assets/Uploads/Documentation/en/MACROS/RefCards/LibOBasic-3-Calc-Flat-A4-EN-v111.pdf LibreOffice Basic Calc]
:*getDataArray() tworzy tablicę zmiennych typu Variant, czyli przekaże również dane tekstowe
 
:*getData() tworzy tablicę zmiennych typu Double, czyli przekaże tylko dane liczbowe
 
  
<span style="color: green"><b><span style='color:#1f1c1b;'>Sub </span></b>Zakresy6()
+
[https://documentation.libreoffice.org/assets/Uploads/Documentation/en/MACROS/RefCards/LibOBasic-5-ExecLib-Flat-A4-EN-v101.pdf LibreOffice Basic Runtime Library]
    <b><span style='color:#1f1c1b;'>Dim</span></b> oSht <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Object</span>, oRng <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Object</span>
 
    <b><span style='color:#1f1c1b;'>Dim</span></b> A(), B(), C()
 
    <b><span style='color:#1f1c1b;'>Dim</span></b> k <b><span style='color:#1f1c1b;'>as</span></b> <span style='color:#000080;'>Long</span>
 
    oSht <span style='color:#000080;'>=</span> ThisComponent.getSheets.getByIndex(<span style='color:#ff0000;'>0</span>) <span style='color:#707070;'>'uchwyt do pierwszego arkusza</span>
 
    ThisComponent.CurrentController.setActiveSheet(oSht) <span style='color:#707070;'>'aktywacja pierwszego arkusza</span>
 
    oSht.getColumns().insertByIndex(<span style='color:#ff0000;'>0</span>, <span style='color:#ff0000;'>1</span>) <span style='color:#707070;'>'dodajemy jedną kolumnę na pozycję pierwszą</span>
 
    oSht.getCellRangebyName(<span style='color:#ff0000;'>&quot;A1&quot;</span>).Value <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>1</span>
 
    oSht.getCellRangebyName(<span style='color:#ff0000;'>&quot;A2&quot;</span>).Value <span style='color:#000080;'>=</span> True <span style='color:#707070;'>'-1</span>
 
    oSht.getCellRangebyName(<span style='color:#ff0000;'>&quot;A3&quot;</span>).Value <span style='color:#000080;'>=</span> <span style='color:#0095ff;'>DateSerial</span>(<span style='color:#ff0000;'>2000</span>, <span style='color:#ff0000;'>1</span>, <span style='color:#ff0000;'>1</span>) <span style='color:#707070;'>'36526</span>
 
    oSht.getCellRangebyName(<span style='color:#ff0000;'>&quot;A4&quot;</span>).<span style='color:#000080;'>String</span> <span style='color:#000080;'>=</span> <span style='color:#ff0000;'>&quot;abcd&quot;</span> <span style='color:#707070;'>'0</span>
 
    oRng <span style='color:#000080;'>=</span> oSht.getCellRangeByName(<span style='color:#ff0000;'>&quot;A1:A4&quot;</span>)
 
    A <span style='color:#000080;'>=</span> oRng.getDataArray()
 
    B <span style='color:#000080;'>=</span> oRng.getData()
 
    C <span style='color:#000080;'>=</span> <span style='color:#0095ff;'>Array</span>( <span style='color:#0095ff;'>Array</span>( <span style='color:#ff0000;'>1</span> ), <span style='color:#0095ff;'>Array</span>( True ), <span style='color:#0095ff;'>Array</span>( <span style='color:#0095ff;'>DateSerial</span>(<span style='color:#ff0000;'>2000</span>, <span style='color:#ff0000;'>1</span>, <span style='color:#ff0000;'>1</span>) ), <span style='color:#0095ff;'>Array</span>( <span style='color:#ff0000;'>&quot;abcd&quot;</span> ) ) <span style='color:#707070;'>'tworzymy tablicę tablic</span>
 
    MsgBox <span style='color:#ff0000;'>&quot;A <span style='color:#000080;'>=</span> [  &quot;</span> <span style='color:#000080;'>&amp;</span> A(<span style='color:#ff0000;'>0</span>)(<span style='color:#ff0000;'>0</span>) <span style='color:#000080;'>&amp;</span> <span style='color:#ff0000;'>&quot; |  &quot;</span> <span style='color:#000080;'>&amp;</span> A(<span style='color:#ff0000;'>1</span>)(<span style='color:#ff0000;'>0</span>) <span style='color:#000080;'>&amp;</span> <span style='color:#ff0000;'>&quot;    |    &quot;</span> <span style='color:#000080;'>&amp;</span> A(<span style='color:#ff0000;'>2</span>)(<span style='color:#ff0000;'>0</span>) <span style='color:#000080;'>&amp;</span> <span style='color:#ff0000;'>&quot;      | &quot;</span> <span style='color:#000080;'>&amp;</span> A(<span style='color:#ff0000;'>3</span>)(<span style='color:#ff0000;'>0</span>) <span style='color:#000080;'>&amp;</span> <span style='color:#ff0000;'>&quot; ]&quot;</span> <span style='color:#000080;'>&amp;</span> <span style='color:#0095ff;'>Chr</span>(<span style='color:#ff0000;'>10</span>) <span style='color:#000080;'>&amp;</span> _
 
            <span style='color:#ff0000;'>&quot;B <span style='color:#000080;'>=</span> [  &quot;</span> <span style='color:#000080;'>&amp;</span> B(<span style='color:#ff0000;'>0</span>)(<span style='color:#ff0000;'>0</span>) <span style='color:#000080;'>&amp;</span> <span style='color:#ff0000;'>&quot; |  &quot;</span> <span style='color:#000080;'>&amp;</span> B(<span style='color:#ff0000;'>1</span>)(<span style='color:#ff0000;'>0</span>) <span style='color:#000080;'>&amp;</span> <span style='color:#ff0000;'>&quot;    |    &quot;</span> <span style='color:#000080;'>&amp;</span> B(<span style='color:#ff0000;'>2</span>)(<span style='color:#ff0000;'>0</span>) <span style='color:#000080;'>&amp;</span> <span style='color:#ff0000;'>&quot;      | &quot;</span> <span style='color:#000080;'>&amp;</span> B(<span style='color:#ff0000;'>3</span>)(<span style='color:#ff0000;'>0</span>) <span style='color:#000080;'>&amp;</span> <span style='color:#ff0000;'>&quot; ]&quot;</span> <span style='color:#000080;'>&amp;</span> <span style='color:#0095ff;'>Chr</span>(<span style='color:#ff0000;'>10</span>) <span style='color:#000080;'>&amp;</span> _
 
            <span style='color:#ff0000;'>&quot;C <span style='color:#000080;'>=</span> [  &quot;</span> <span style='color:#000080;'>&amp;</span> C(<span style='color:#ff0000;'>0</span>)(<span style='color:#ff0000;'>0</span>) <span style='color:#000080;'>&amp;</span> <span style='color:#ff0000;'>&quot; | &quot;</span> <span style='color:#000080;'>&amp;</span> C(<span style='color:#ff0000;'>1</span>)(<span style='color:#ff0000;'>0</span>) <span style='color:#000080;'>&amp;</span> <span style='color:#ff0000;'>&quot; | &quot;</span> <span style='color:#000080;'>&amp;</span> C(<span style='color:#ff0000;'>2</span>)(<span style='color:#ff0000;'>0</span>) <span style='color:#000080;'>&amp;</span> <span style='color:#ff0000;'>&quot; | &quot;</span> <span style='color:#000080;'>&amp;</span> C(<span style='color:#ff0000;'>3</span>)(<span style='color:#ff0000;'>0</span>) <span style='color:#000080;'>&amp;</span> <span style='color:#ff0000;'>&quot; ]&quot;</span>
 
<b><span style='color:#1f1c1b;'>End Sub</span></b></span>
 
  
 +
[https://documentation.libreoffice.org/assets/Uploads/Documentation/en/MACROS/RefCards/LibOBasic-6-Dialogs-Flat-A4-EN-v103.pdf LibreOffice Basic Dialogs]
  
  
  
  
== Polecane strony internetowe ==
 
  
[https://www.openoffice.org/api/docs/common/ref/com/sun/star/sheet/XCellRangeData.html Apache OpenOffice – interface XCellRangeData]
+
== Wiki.openoffice.org ==
 +
 
 +
[https://wiki.openoffice.org/wiki/Documentation The Apache OpenOffice Documentation Project]
 +
 
 +
[https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide/Runtime_Library The Runtime Library of Apache OpenOffice Basic]
 +
 
 +
::[https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide/Conversion_Functions_(Runtime_Library) Conversion Functions]
 +
 
 +
::[https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide/Strings_(Runtime_Library) Strings]
 +
 
 +
::[https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide/Date_and_Time_(Runtime_Library) Date and Time]
 +
 
 +
::[https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide/Files_and_Directories_(Runtime_Library) Files and Directories]
 +
 
 +
::[https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide/Message_and_Input_Boxes_(Runtime_Library) Message and Input Boxes]
 +
 
 +
::[https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide/Other_Functions_(Runtime_Library) Other Functions]
 +
 
 +
[https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_Functions_listed_alphabetically Calc: Functions listed alphabetically]
 +
 
 +
[https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_Functions_listed_by_category Calc: Functions listed by category]
 +
 
 +
::[https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_Array_functions Array functions]
 +
 
 +
::[https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_Complex_Number_functions Complex Number functions]
 +
 
 +
::[https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_Date_%26_Time_functions Date & Time functions]
 +
 
 +
::[https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_Information_functions Information functions]
 +
 
 +
::[https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_Logical_functions Logical functions]
 +
 
 +
::[https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_Mathematical_functions Mathematical functions]
 +
 
 +
::[https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_Number_Conversion_functions Number Conversion functions]
 +
 
 +
::[https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_Spreadsheet_functions Spreadsheet functions]
 +
 
 +
::[https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_Statistical_functions Statistical functions]
 +
 
 +
::[https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_Text_functions Text functions]
 +
 
 +
 
 +
 
 +
 
 +
 
 +
== Openoffice.org ==
 +
 
 +
[https://www.openoffice.org/api/docs/common/ref/index-files/index-1.html Global Index]
  
  

Aktualna wersja na dzień 22:36, 18 wrz 2022