Attribute VB_Name = "Module1" Sub RoundLahinTuhat() Dim Luku As Double Luku = 1234.567 MsgBox Int(Round(Luku / 1000)) * 1000 End Sub Sub RoundTesti() Dim Luku As Double Luku = 1234.567 MsgBox Round(Luku, 2) '1234,57 MsgBox Round(Luku, 1) '1234,6 MsgBox Round(Luku, 0) '1235' MsgBox Round(Luku) '1235 Luku = -1234.567 MsgBox Round(Luku, 2) '-1234,57 MsgBox Round(Luku, 1) '-1234,6 MsgBox Round(Luku, 0) '-1235 MsgBox Round(Luku) '-1235 End Sub Sub IntTesti() MsgBox Int(7.8) '7 MsgBox Int(7.1) '7 MsgBox Int(-7.8) '-8 MsgBox Int(-7.1) '-8 End Sub Private Function Etumerkki(ByVal Luku As Double) As String Dim EMerkki As Long EMerkki = Sgn(Luku) Select Case EMerkki Case 1: Etumerkki = "+" Case -1: Etumerkki = "-" Case 0: Etumerkki = Chr(177) End Select End Function Sub TestaaEtumerkki() Dim TestiLuku As Double TestiLuku = -10 MsgBox Etumerkki(TestiLuku) & " " & Abs(TestiLuku) End Sub Private Function SatunnaisLukuValilta( _ ByVal Alaraja As Long, ByVal Ylaraja As Long) As Long 'Palautettava satunnaisluku halutaan kokonaislukuna, joten funktion palauttama tyyppi on Long. 'Rivillä 2 lasketaan funktion palauttama arvo. ' 'Oletetaan, että Alaraja-muuttujassa on arvo -5 ja Ylaraja-muuttujan arvo on +5. 'Tällöin satunnaisluvun laskeminen rivillä 2 tapahtuu seuraavasti. 'Kaavan osa (Ylaraja - Alaraja + 1) tuottaa vastaukseksi 11, ja tämä kerrottuna Rnd-funktion palauttamalla arvolla on nollan ja kymmenen välillä. 'Se ei voi olla 11, koska Rnd ei koskaan palauta arvoa tasan yksi ja Int-funktio ei ole pyöristysfunktio vaan katkaisufunktio. 'Kaava Abs(Alaraja) palauttaa Alarajan absoluuttisen arvon. 'Joten kaavan alkuosan arvo on nollan ja kymmenen välillä ja kun tähän lisätään Alaraja-muuttujan arvo (tässä -5) saadaan lopputulos, joka on välillä -5:+5. Randomize SatunnaisLukuValilta = _ Int((Ylaraja - Alaraja + 1) * Rnd + Alaraja) End Function Sub TestaaSatunnaisLukuValilta() MsgBox SatunnaisLukuValilta(-2, 2) End Sub Private Sub SummaTot_HuonoRatkaisu() MsgBox Format(1.54 * 1.22, "0.00") & Chr(10) & _ Format(2.76 * 1.22, "0.00") & Chr(10) & _ Format(1.12 * 1.22, "0.00") & Chr(10) & _ "--------" & Chr(10) & _ Format(1.54 * 1.22 + 2.76 * 1.22 + 1.12 * 1.22, "0.00") End Sub Private Sub SummaTot_ParempiRatkaisu() MsgBox Round(1.54 * 1.22, 2) & Chr(10) & _ Round(2.76 * 1.22, 2) & Chr(10) & _ Round(1.12 * 1.22, 2) & Chr(10) & _ "--------" & Chr(10) & _ Round(1.54 * 1.22, 2) + Round(2.76 * 1.22, 2) + Round(1.12 * 1.22, 2) End Sub