Proponuję wcześniej sprawdzać czy wpisana dana jest numeryczna i to załatwi sprawę.
Dodatkowo po obliczeniach zamieniałbym obliczoną daną na string gdyż wtedy pokazywać będzie wartość liczbową po polsku czyli z przecinkiem
Proponuje zmienić kod pod txt3 na
Zaloguj się, aby zobaczyć kod
i analogicznie dla txt5.
i jeszcze wyłączył bym do edycji (enabled=false) okienka z wynikami vatu by nikt nie zmienił z ręki wartości a by były tylko widoczne
Masz jeszcze błąd przy wyniku (przycisk OK) bo jak txt3 jest puste to bug (brak if'a)
Nie rozumiem do końca opcji z wyskakującym okienkiem.
---------------
dodane po chwili
---------------
kolejny błąd
wszystkie zmienne "W" są typu integer więc obcina wartości po przecinku.
I następny mankament VB: "Round"
Uważaj bo amerykanie inaczej zaokrąglają
. To co dla nas jest normalne nie koniecznie dla funkcji round.
Wprowadź a zobaczysz:
1,5 *23% = 0,345 czyli w Polsce 0,35
2,5*23%=0,575 czyli 0,58
a zobacz co pokazuje VB i znajdź konsekwencję
Proponuje zaokrąglać nietypowo poprzez "format" ale wtedy jest "po polsku".
---------------
tu ze strony Microsoftu o round w VB:
' 2.125 --> 2.12
' 2.135 --> 2.13
' 2.145 --> 2.14
' 3.125 --> 3.12
' 3.135 --> 3.14
' 3.145 --> 3.14
Tłumaczą tio tak:
Dzieje się tak, ponieważ wewnętrznie mnoży metoda value o 10cyfr, a w tym przypadku operacja mnożenia odczuwa utratę precyzji.
to "cyfr" w powyższym to potęga 10.
Ale jak złapać konsekwencję? Czy w ogóle się da?