VBA:n tietotyyppi ongelma

Minni

Heippa!
Minulla on sellainen ongelma, että olen tehnyt Excelin VBA:lla lomakkeen,joka ottaa tietystä taulukon solusta yhden desimaaliluvun, ja sitten syötän siihen toisen luvun, joka laskee tästä taulukossa olevasta luvusta tietyn prosentin (tämä prosenttiluku on kokonaisluku), ja sitten tulos tulee Labeliin. Tämä tietty taulukon luku tulee TextBoxiin ja luku, jonka syötän tulee myös toiseen TextBoxiin. Tässä on koodi, jota olen käyttänyt:
Private Sub CommandButton1_Click()
Range("E27").Select
TextBox1 = Range("E27")
End Sub

Private Sub CommandButton2_Click()
MsgBox "Syötä haluamasi prosenttiluku tyhjään ruutuun!", vbOKOnly
End Sub

Private Sub CommandButton3_Click()
Label1.Caption = TextBox1 * TextBox2 / 100
End Sub

Private Sub CommandButton4_Click()
TextBox2 = " "
End Sub

Private Sub CommandButton5_Click()
If MsgBox("Haluatko lopettaa laskemisen?", vbYesNo vbQuestion, "Lopetus") = vbYes Then
End
End If
End Sub

Ongelma on siinä, että tulos ei tule Labeliin, jos taulukossa oleva luku on desimaaliluku, tulee virheilmoitus: run-time error 13, type mismatch eli tyyppivirhe, mutta kokonaisluvuilla se toimii oikein. Sekin ihmeellisyys tässä vielä on, että tämä toimii -97 Excel versiossa oikein(siis myös desimaaliluvuilla), mutta ei toimi uudemmissa versioissa, se on minusta aika outo juttu? Olen yrittänyt vaikka millaista koodia, että saisin sen toimimaan mutta tuloksetta. Olisin tosi onnellinen jos joku voisi ratkaista minulle tämän ongelman. Kiitän jo etukäteen oikeasta ratkaisusta.
tv.epätoivoinen Minni

3

383

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Bill Gates

      Todennäköisesti alkaa toimimaan jos käyt vaihtamassa ohjauspaneelin maa-asetuksista desimaalierottimen Excelin kieliversiota vastaavaksi.
      Excel FIN => pilkku
      Excel UK => piste

      Laskutoimituksissa / palauttaa liukuluvun (desimaalit) kun taas palauttaa kokonaisluvun.

      • Petri_Petri

        Muista myös muuttaa tekstilabelit numeroiksi.

        Eli muuta rivisi
        "Label1.Caption = TextBox1 * TextBox2 / 100"

        seuraavaksi:

        Label1.Caption = val(TextBox1) * val(TextBox2) / 100

        Se, ketä desimaaliluvun syöttää, käyttää siinä sitten oikeata desimaalieroitinta, eli pilkkua tai pistettä.


      • huttunen
        Petri_Petri kirjoitti:

        Muista myös muuttaa tekstilabelit numeroiksi.

        Eli muuta rivisi
        "Label1.Caption = TextBox1 * TextBox2 / 100"

        seuraavaksi:

        Label1.Caption = val(TextBox1) * val(TextBox2) / 100

        Se, ketä desimaaliluvun syöttää, käyttää siinä sitten oikeata desimaalieroitinta, eli pilkkua tai pistettä.

        VB:ssä osa kirjastofunktiosta vaatii aina pisteen desimaalierottimeksi, osa taas katsoo erottimen maa-asetuksista.

        Tämä on tosi sekava koko systeemi, mutta käsittääkseni val() funktiossa desimaalierottimena pitää käyttää aina pistettä. Eli se ei toimi suomalaisilla asetuksilla, siis pilkun kanssa.

        Eli ilman val'ia koodi toimii, kunhan käyttää maa-asetusten mukaista erotinta.


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Upea peppuisella naisella

      Upea peppuisella naisella on upea peppu.
      Ikävä
      100
      6524
    2. Nikkalassa vauhdilla nokka kohti taivasta

      Mitähän Darwin sanoisi näistä 4 suomalaisesta, jotka kävivät Haparandan puolella näyttämässä, kuinka Suomi auto kulkee t
      Tornio ja Haaparanta
      31
      3900
    3. törniöläiset kaaharit haaparannassa

      isäpapan autolla kaahatta 270 km/h metsään https://www.lapinkansa.fi/nsd-kaksi-suomalaista-kuoli-kolarissa-haaparannall/
      Tornio ja Haaparanta
      30
      3315
    4. Sitä saa mitä tilaa Perussuomalaiset!

      https://yle.fi/a/74-20160212 SDP:n kannatus se vain nousee ja Keskusta on kolmantena. Kokoomus saanut pienen osan persu
      Maailman menoa
      381
      1792
    5. Mihin se sysipska hävisi?

      Katso Frida Kahlo elämäkerta ja opi.
      Ikävä
      33
      1408
    6. Upea peppuisella miehellä

      Upea peppuisella miehellä on upea peppu.
      Ikävä
      27
      1350
    7. Eelin, 20, itsemurhakirje - Suomalaisen terveydenhuollon virhe maksoi nuoren elämän

      Yksikin mielenterveysongelmien takia menetetty nuori on liikaa. Masennusta sairastava Eeli Syrjälä, 20, ehti asua ensi
      Maailman menoa
      47
      1053
    8. Anteeksi kulta

      En oo jaksanut pahemmin kirjoitella, kun oo ollut tosi väsynyt. Mut ikävä on mieletön ja haluisin kuiskata korvaasi, hyv
      Ikävä
      11
      986
    9. Perttu Sirviö laukoo täydestä tuutista - Farmi Suomi -kisaajista kovaa tekstiä "Pari mätää munaa..."

      Ohhoh, Farmilla tunteet alkaa käydä kuumana, kun julkkiksia tippuu jaksosta toiseen! Varo sisältöpaljastuksia: https:
      Tv-sarjat
      11
      920
    10. Tykkään susta todella

      Paljon. Olet ihana ❤️
      Ikävä
      42
      889
    Aihe