Walczę z oknami dialogowymi i nie umiem wyjść z pewnej sytuacji (nie jestem inforamtykiem tylko budowlancem) - pewnie to jest trywialne
W załączniku jest arkusz z przykładowym problemem.
Otóż:
-w arkuszu znajduje się przycisk uruchamiający okno dialogowe "OknoDialogowe1" (makro "PokazOknoDialogowe")
Kod: Zaznacz cały
REM Makro wywołujące okno dialogowe
Sub PokazOknoDialogowe
Dim libStandard
Dim libDialog
libStandard = DialogLibraries.getByName("Standard")
REM W cudzysłowiu wpisać nazwe okna dialogowego z zakładki
libDialog = libStandard.getByName("OknoDialogowe1")
REM Dwie poniższe zmienne sa nazwa okna dialogowego
OknoDialogowe1 = CreateUnoDialog(libDialog)
OknoDialogowe1.execute
End Sub- po wpisaniu parametrów i wybraniu opcji w tym oknie dialogowym klawisz "OK" powinien wykonać następujące czynności (za pomocą makra "KopiujZOkna"):
* skopiować dane z wyboru do komórek od C4 do C10, z tym że z pola wyboru i przycisków opcji powinien kopiować wartości 0 ,1 albo FAŁSZ, PRAWDA, z okna listy wybrany tekst, z pola tekstowego tekst a z pola sformatowanego liczbe
* następnie sprawdzic wartość komórki C12, jeżeli wynosi ona 1 powinien wyswietlic w oknie MsBox monit z trescia komorki C13, jezeli wartosc komorki C12 jest inna niz 1 zamknac okno dialogowe.
* Czy da się wyświetlić Msbox z trescia w kilku linijkach ale tak zeby np.w górnej linijce wyświetlił tekst "znaleziono błędy:" a w niższej tekst z komórki C13, i np w następnej tekst z komórki C14???
Ale cos mi tu nie idzie, pokazuje mi informacje ze nie zdefiniowalem zmiennej
Kod: Zaznacz cały
Sub KopiujZOkna
Dim OknoDialogowe1 as object
Dim PoleWyboru as object
Dim PoleListy as object
Dim PrzyciskOpcji1 as object
Dim PrzyciskOpcji2 as object
Dim PrzyciskOpcji3 as object
Dim PoleTekstowe as object
Dim PoleSformatowane as object
Dim PoleKontrolne as object REM pole kontrolne stwierdzajace poprawnosc danych w oknie
Dim OpisBledu as object REM pole opisu błędu
REM Kopiowanie danych z POLA WYBORU (CHECK BOX)
PoleWyboru = OknoDialogowe1.getControl ("CheckBox1").Bolean
PoleWyboru = thisComponent.Sheets(0).getCellRangeByName("C4")
REM Kopiowanie danych z POLA LISTY (LIST BOX)
PoleListy = thisComponent.Sheets(0).getCellRangeByName("C5")
PoleListy.Value = OknoDialogowe1.getControl ("ListBox1").String
REM Kopiowanie danych z PRZYCISKU OPCJI 1 (OPTION BUTTON 1)
PrzyciskOpcji1 = thisComponent.Sheets(0).getCellRangeByName("C6")
PrzyciskOpcji1.Value = OknoDialogowe1.getControl ("OptionButton1").Value
REM Kopiowanie danych z PRZYCISKU OPCJI 2 (OPTION BUTTON 2)
PrzyciskOpcji2 = thisComponent.Sheets(0).getCellRangeByName("C7")
PrzyciskOpcji2.Value = OknoDialogowe1.getControl ("OptionButton2").Value
REM Kopiowanie danych z PRZYCISKU OPCJI 3 (OPTION BUTTON 3)
PrzyciskOpcji3 = thisComponent.Sheets(0).getCellRangeByName("C8")
PrzyciskOpcji3.Value = OknoDialogowe1.getControl ("OptionButton3").Value
REM Kopiowanie danych z POLA TEKSTOWEGO (TEXT FIELD)
PoleTekstowe = OknoDialogowe1.getControl ("TextField1").Text
PoleTekstowe = thisComponent.Sheets(0).getCellRangeByName("C9")
REM Kopiowanie danych z POLA SFORMATOWANEGO (FORMATTED FIELD)
PoleSformatowane.Value = OknoDialogowe1.getControl("FormattedField1")
PoleSformatowane = thisComponent.Sheets(0).getCellRangeByName("C10")
REM KONTROLA PRAWIDŁOWOŚCI DANYCH W OKNIE
thisComponent.Sheets(0).getCellRangeByName("C12").Value = PoleKontrolne.Value
thisComponent.Sheets(0).getCellRangeByName("C13").String = OpisBledu.String
IF PoleKontrolne = 1 THEN
msgbox("ZNALEZIONO BŁEDNE DANE:"+OpisBledu,0,"BŁĘDNE DANE")
ELSE
OknoDialogowe1.endExecute
OknoDialogowe1.dispose() REM uwolnienie okna dialogowego
END IF
End SubZ gory dziekuje za pomoc, w zalaczniku przesylam rowniez plik Calca.