Generator liczb losowych z kolorowaniem tła komórek

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 3410 razy

Czas najwyższy stworzyć pierwsze makro w OpenOffice Calc, które wygeneruje losowe liczby zmiennoprzecinkowe z zakresu od 0 do 1 i pokoloruje komórki, w których zostaną one zapisane. Makro i funkcje stworzone zostaną lokalnie (co to znaczy zostało omówione na stronie OpenOffice - własne funkcje).

W utworzonym lokalnym module należy zamieścić następujący kod:
Function SetColor(k as double, w as double) Dim document as object Dim dispatcher as object document = ThisComponent.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") Dim args2(0) as new com.sun.star.beans.PropertyValue args(0).Name = "BackgroundColor" args(0).Value = Int(255 * w / k) * 256 * 256 + Int(255 - 255 * w / k) * 256 dispatcher.executeDispatch(document, ".uno:BackgroundColor","",0,args()) End Function Sub Generator Dim document as object Dim dispatcher as object document = ThisComponent.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") Dim args(0) as new com.sun.star.beans.PropertyValue args(0).Name = "ToPoint" args(0).Value = "$B$2" dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args()) Dim i as integer Dim j as integer For j = 1 To 10 For i = 1 To 10 Dim str as string Dim w as double w = rnd() str = w args(0).Name = "StringName" args(0).Value = str dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args()) SetColor(1, w) dispatcher.ExecuteDispatch(document, ".uno:GoDown", "" , 0 ,Array()) Next i For i = 1 To 10 dispatcher.ExecuteDispatch(document, ".uno:GoUp", "", 0, Array()) Next i dispatcher.ExecuteDispatch(document, ".uno:GoRight", "", 0, Array()) Next j End Sub

a następnie zapisać dokument. Teraz w arkuszu kalkulacyjnym programu Calc należy wybrać z menu pozycję Widok->Paski narzędzi->Formanty. Na pasku narzędziowym Formanty jeżeli nie są aktywne ikonki formantów należy kliknąć ikonę Włącz/Wyłącz tryb projektu a następnie wybrać formant przycisku i narysować go w arkuszu kalkulacyjnym. Na przycisku kliknąć ppm i z menu podręcznego wybrać pozycję Formant. Pojawi się okno Właściwości: Przycisk w zakładce Ogólne zmienić należy  pole Etykieta na tekst np. Generuj liczby losowe. W zakładce Wydarzenia dla pozycji Zatwierdź działanie kliknąć przycisk z trzema kropkami, by wyświetliło się okno dialogowe Przypisz działanie zaznaczyć pozycję Zatwierdź działanie i kliknąć przycisk Makro... Teraz przypisać należy makro Generator znajdując po lewej stronie moduł, z którego ono pochodzi a po prawej z listy wybierając makro o tejże nazwie. Kliknąć należy OK i zamknąć pozostałe okna. Teraz na pasku formantów przełączyć tryb projektowania i już można sprawdzić, czy działa.

Rys. 1
Ilustracja końcowego efektu działania makra generującego liczby losowe i koloryzujące komórki według ich wartości.

P.S.

Na wszelki wypadek, co by nie było, że sknerą jestem w załączniku zamieszczam gotowy dokument z generatorem liczb losowych.

A może by tak jeszcze zrobić losowanie z sortowaniem? - a proszę bardzo, oto i ono:

Sub generator2 Redim liczby(99) as double Dim i as integer ' Wczytywanie maksymalnej wartości losowania' Dim maximum as double arkusz = thisComponent.currentController.getActiveSheet() maksimum = arkusz.getCellRangeByName("C16").Value If maksimum <= 0 Then ' Jeżeli maksimum jest mniejsze lub równe zero to' exit sub ' zakończ działanie makra' End If ' losowanie 100 liczb' For i = 0 To 99 liczby(i) = rnd() * maksimum ' z zakresu od 0 do maksimum' Next i ' sortowanko liczb' Dim k as long Do k = 0 For i = 0 To 98 If (liczby(i) > liczby(i + 1)) Then Dim a as double a = liczby(i) liczby(i)= liczby(i + 1) liczby(i + 1) = a k = k + 1 End If Next i Loop While(k > 0) ' koniec sortowanka liczb' ' Wpisywanie wylosowanych liczb w komórki arkusza' For i = 0 To 99 arkusz.GetCellByPosition(1 + (i mod 10),1 + Int(i / 10)).Value = liczby(i) Next i ' Koniec wspisywania' ' Kolorowanie komórek według ich wartości' Dim j as integer Dim document as object Dim dispatcher as object document = ThisComponent.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") Dim args(0) as new com.sun.star.beans.PropertyValue args(0).Name = "ToPoint" args(0).Value = "$B$2" dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args()) For j = 1 To 10 For i = 1 To 10 SetColor(maksimum, liczby(j - 1 + (i - 1) * 10)) dispatcher.ExecuteDispatch(document, ".uno:GoDown", "" , 0 ,Array()) Next i For i = 1 To 10 dispatcher.ExecuteDispatch(document, ".uno:GoUp", "", 0, Array()) Next i dispatcher.ExecuteDispatch(document, ".uno:GoRight", "", 0, Array()) Next j 'Koniec kolorowania' End Sub
Propozycje książek
tytuł: Visual Basic 2015 w 24 godziny autor: James Foxall

Tytuł:

Visual Basic 2015 w 24 godziny

Autor:

James Foxall

tytuł: Informatyka Europejczyka. Zeszyt ćwiczeń dla gimnazjum. Edycja: Windows Vista, Linux Ubuntu, MS Office 2007, OpenOffice.org (wydanie II) autor: Jolanta Pańczyk

Tytuł:

Informatyka Europejczyka. Zeszyt ćwiczeń dla gimnazjum. Edycja: Windows Vista, Linux Ubuntu, MS Office 2007, OpenOffice.org (wydanie II)

Autor:

Jolanta Pańczyk

tytuł: Informatyka Europejczyka. Podręcznik dla gimnazjum. Edycja: Windows XP, Linux Ubuntu, MS Office 2003, OpenOffice.org (wydanie III) autor: Jolanta Pańczyk

Tytuł:

Informatyka Europejczyka. Podręcznik dla gimnazjum. Edycja: Windows XP, Linux Ubuntu, MS Office 2003, OpenOffice.org (wydanie III)

Autor:

Jolanta Pańczyk

tytuł: Informatyka Europejczyka. Podręcznik dla gimnazjum. Edycja: Windows Vista, Linux Ubuntu, MS Office 2007, OpenOffice.org (wydanie III) autor: Jolanta Pańczyk

Tytuł:

Informatyka Europejczyka. Podręcznik dla gimnazjum. Edycja: Windows Vista, Linux Ubuntu, MS Office 2007, OpenOffice.org (wydanie III)

Autor:

Jolanta Pańczyk

tytuł: Informatyka Europejczyka. Zeszyt ćwiczeń do zajęć komputerowych dla szkoły podstawowej, kl. 4. Edycja: Windows 7, Windows Vista, Linux Ubuntu, MS Office 2007, OpenOffice.org (Wydanie II) autor: Danuta Kiałka, Katarzyna Kiałka

Tytuł:

Informatyka Europejczyka. Zeszyt ćwiczeń do zajęć komputerowych dla szkoły podstawowej, kl. 4. Edycja: Windows 7, Windows Vista, Linux Ubuntu, MS Office 2007, OpenOffice.org (Wydanie II)

Autor:

Danuta Kiałka, Katarzyna Kiałka

tytuł: Informatyka Europejczyka. Zeszyt ćwiczeń do zajęć komputerowych dla szkoły podstawowej, kl. 5. Edycja: Windows 7, Windows Vista, Linux Ubuntu, MS Office 2007, OpenOffice.org (Wydanie II) autor: Danuta Kiałka, Katarzyna Kiałka

Tytuł:

Informatyka Europejczyka. Zeszyt ćwiczeń do zajęć komputerowych dla szkoły podstawowej, kl. 5. Edycja: Windows 7, Windows Vista, Linux Ubuntu, MS Office 2007, OpenOffice.org (Wydanie II)

Autor:

Danuta Kiałka, Katarzyna Kiałka

tytuł: Informatyka Europejczyka. Zeszyt ćwiczeń do zajęć komputerowych dla szkoły podstawowej, kl. 6. Edycja: Windows 7, Windows Vista, Linux Ubuntu, MS Office 2007, OpenOffice.org (Wydanie II) autor: Danuta Kiałka, Katarzyna Kiałka

Tytuł:

Informatyka Europejczyka. Zeszyt ćwiczeń do zajęć komputerowych dla szkoły podstawowej, kl. 6. Edycja: Windows 7, Windows Vista, Linux Ubuntu, MS Office 2007, OpenOffice.org (Wydanie II)

Autor:

Danuta Kiałka, Katarzyna Kiałka

tytuł: Informatyka Europejczyka. Zeszyt ćwiczeń do zajęć komputerowych dla szkoły podstawowej, kl. 4. Edycja: Windows XP, Linux Ubuntu, MS Office 2003, OpenOffice.org (Wydanie II) autor: Danuta Kiałka, Katarzyna Kiałka

Tytuł:

Informatyka Europejczyka. Zeszyt ćwiczeń do zajęć komputerowych dla szkoły podstawowej, kl. 4. Edycja: Windows XP, Linux Ubuntu, MS Office 2003, OpenOffice.org (Wydanie II)

Autor:

Danuta Kiałka, Katarzyna Kiałka

tytuł: Informatyka Europejczyka. Zeszyt ćwiczeń do zajęć komputerowych dla szkoły podstawowej, kl. 5. Edycja: Windows XP, Linux Ubuntu, MS Office 2003, OpenOffice.org (Wydanie II) autor: Danuta Kiałka, Katarzyna Kiałka

Tytuł:

Informatyka Europejczyka. Zeszyt ćwiczeń do zajęć komputerowych dla szkoły podstawowej, kl. 5. Edycja: Windows XP, Linux Ubuntu, MS Office 2003, OpenOffice.org (Wydanie II)

Autor:

Danuta Kiałka, Katarzyna Kiałka

tytuł: Informatyka Europejczyka. Zeszyt ćwiczeń do zajęć komputerowych dla szkoły podstawowej, kl. 6. Edycja: Windows XP, Linux Ubuntu, MS Office 2003, OpenOffice.org (Wydanie II) autor: Danuta Kiałka, Katarzyna Kiałka

Tytuł:

Informatyka Europejczyka. Zeszyt ćwiczeń do zajęć komputerowych dla szkoły podstawowej, kl. 6. Edycja: Windows XP, Linux Ubuntu, MS Office 2003, OpenOffice.org (Wydanie II)

Autor:

Danuta Kiałka, Katarzyna Kiałka

Załączniki:

Makro