Jak wprowadzić liczbę dziesiętną?

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO
Emart22
Posty: 20
Rejestracja: sob sty 11, 2014 11:29 pm

Jak wprowadzić liczbę dziesiętną?

Post autor: Emart22 »

Witam. Męczę się już długo z oknem dialogowym. Na razie tylko z polem numerycznym. Otóż dodaje tylko liczby całkowite mimo, że widzi w MsgBox-ie liczby dziesiętne. Jeśli ktoś miałby chęć i czas podpowiedzieć o co chodzi. Gdzie mogę do poczytać jakieś obszerniejsze materiały na temat pisania makr w OO?

Kod: Zaznacz cały

Dim SprzedazOknoDial As Object

Sub PokazSprzedazOknoDial
    DialogLibraries.LoadLibrary("Standard")
    SprzedazOknoDial = CreateUnoDialog( DialogLibraries.Standard.SprzedazOknoDial )
    SprzedazOknoDial.Execute()
End Sub

Sub Dodaj_Click1
    Dim IleKosztuje As Object
    Dim StaraWartosc As Single
    Dim NowaWartosc As Single
    oDocument = ThisComponent
    oSheet = oDocument.getSheets.getByName("Sprzedaz") 
    oCell = oSheet.getCellRangeByName("A1") 
    StaraWartosc = oCell.getValue
    MsgBox (StaraWartosc,,"Stara Wartość z komórki") Rem Podgląd wartości
    IleKosztuje = SprzedazOknoDial.getControl("Cena")
    MsgBox (IleKosztuje.text,,"Ile Kosztuje") Rem Podgląd wartości
    ThisComponent.Sheets(15).getCellRangeByName("A1").setValue(IleKosztuje.Text)
    NowaWartosc = oCell.getValue
    oCell.setValue (StaraWartosc+NowaWartosc)
End Sub

Sub ZamknijOkno
	SprzedazOknoDial.endExecute()
End Sub
Załączniki
test.ods
(11.61 KiB) Pobrany 215 razy
OpenOffice 4.0.1 Windows 8.1
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Jak wprowadzić liczbę dziesiętną?

Post autor: belstar »

Emart22 pisze:Gdzie mogę do poczytać jakieś obszerniejsze materiały na temat pisania makr w OO?
https://wiki.openoffice.org/wiki/Docume ... ASIC_Guide
http://www.pitonyak.org/
Pliki pomocy F1
Fora internetowe
Blogi
etc.


Chodzi o to że próbujesz dodać tekst do liczby

Kod: Zaznacz cały

NowaWartosc = IleKosztuje.text
Musisz pobraną wartość poddać konwersji

Kod: Zaznacz cały

NowaWartosc = CSng(IleKosztuje.Text)
Poza tym po co najpierw wstawiasz wartość z pola numerycznego do komórki by później wstawić nową liczbę po operacji dodawania (pomijając to że metoda setValue wymaga jako argumentu wartości liczbowej a ty przekazujesz jej tekst)

Kod: Zaznacz cały

ThisComponent.Sheets(0).getCellRangeByName("A1").setValue(IleKosztuje.Text)
Nowy poprawiony kod

Kod: Zaznacz cały

Sub Dodaj_Click1
	Dim IleKosztuje As Object
	Dim StaraWartosc As Single
	Dim NowaWartosc As Single
        oDocument = ThisComponent
        oSheet = oDocument.getSheets.getByName("Sprzedaz") 
        oCell = oSheet.getCellRangeByName("A1") 
        StaraWartosc = oCell.getValue
        MsgBox (StaraWartosc,,"Stara Wartość z komórki")
        IleKosztuje = SprzedazOknoDial.getControl("Cena")
        MsgBox (IleKosztuje.text,,"Ile Kosztuje")
        'ThisComponent.Sheets(0).getCellRangeByName("A1").setValue(IleKosztuje.Text)
        NowaWartosc = CSng(IleKosztuje.Text)'oCell.getValue
        oCell.setValue (StaraWartosc+NowaWartosc)
End Sub
LibreOffice 5.1.2.2 Ubuntu 16 LTS
Emart22
Posty: 20
Rejestracja: sob sty 11, 2014 11:29 pm

Re: Jak wprowadzić liczbę dziesiętną?

Post autor: Emart22 »

Wielkie dzięki za szybką odpowiedź. Przeszedł mi przez myśl ten powód (tekst+liczba), ale myślałem,że pole numeryczne zwraca liczbę a nie tekst a poza tym na liczbach całkowitych działało dobrze. Jeszcze raz dzięki za pomoc, ale na pewno będę jej jeszcze potrzebował więc polecam się na przyszłość. ;)
OpenOffice 4.0.1 Windows 8.1
ODPOWIEDZ