Gå til innhold

problemer med addisjon og % i kalkulator


Anbefalte innlegg

Skrevet (endret)

Jeg får ikke addisjon til og fungere den slår bare sammen tallene.

Private Sub addisjon_Click()

MsgBox Txttall.Text & " + " & txttall2.Text & " = " & Txttall.Text + txttall2.Text

End Sub

jeg får ikke % til og funke heller

  Dim Tall

  Tall = Rnd()

  MsgBox Rnd * 100

noen som kan hjelpe

Endret av Martin-Vb
Videoannonse
Annonse
Skrevet

Viktig å vite forskjellen på datatyper her.

TextBox.Text er av typen "string" denne kan i utgangspunktet bare inneholde tekst.

Grunnen til at du får dette resultatet her, er at Visual Basic forstår at du vil legge tekst til en messagebox, og derfor bruker den + til å legge sammen tekst.

Det du må gjøre for å unngå dette, er å gjøre om datatypen i Textbox.Text til integer, eller flyttall.

Bruk CInt, CSng, CDbl etc for å gjøre dette.

 

MsgBox Txttall.Text & " + " & txttall2.Text & " = " & (CInt(Txttall.Text) + CInt(txttall2.Text))

 

og for den under, så bruker du Rnd to ganger

 

Dim tall As Double
tall = Rnd()
MsgBox CInt(tall * 100)

 

Les litt om datatyper, viktig informasjon.

Skrevet
men % funka ikke.

8824498[/snapback]

Hvordan fungerte den ikke? Får du en feilmelding? Ønsker du at tallet skal være mellom noe annet enn 0 og 100? Det hjelper å være litt spesifikk, vet du. :)

 

Iallfall - forsøk heller med denne funksjonen:

Public Function RandomNumber(Min As Double, Max As Double, Optional Precision As Long = 2) As Double

   

    Static Initialized As Boolean

   

    ' Se om vi har oppdatert tilfeldighetsgeneratoren med en ny seed

    If Not Initialized Then

        Randomize

        Initialized = True

    End If

 

    ' Returnerer et tilfeldig avrundet nummer mellom (og inkl.) min og max.

    RandomNumber = RoundOff(Min + (Rnd * (Max - Min)), Precision)

 

End Function

 

Public Function RoundOff(Value As Double, Optional Precision As Long = 2) As Double

 

    ' Flytter desimalen til området der avrundingen finner sted, og tilbake igjen

    RoundOff = Fix(Value * (10 ^ Precision)) / (10 ^ Precision)

 

End Function

Når du nå skriver RandomNumber(1, 100, 2) vil du få et tilfeldig nummer mellom (og inkl.) 1 og 100 med to desimaler.

Skrevet
nå får jeg error message:

expecded end sub.

Da har du sikkert lagt inn funksjonen inn i subben. Det skal du ikke. Du må legge den inn UTENFOR, eksempelvis helt nederst i formens kode:

Private Sub Tilfeldighet_Click()

    MsgBox RandomNumber(1, 100, 2)

End Sub

 

Public Function RandomNumber(Min As Double, Max As Double, Optional Precision As Long = 2) As Double

 

    Static Initialized As Boolean

 

' *** Legg til resten av koden her. ***

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...