VBA:n Currency tietotyypin muutos ongelmana

Hei!
Olen yrittänyt vaikka millä lailla muuttaa kokonaislukuja desimaaliluvuiksi, mutta en ole onnistunut. Ongelma on siinä, että minulla on Excelin VBA:n lomake, jossa syötän lukuja taulukosta ja lasken niistä tietyn prosentin, ja sitten se tietty luku tulostuu Labeliin, jossa vielä näkyy desimaalit, mutta kun sitten siirrän sen luvun takaisin taulukkoon, niin silloin se taulukossa näkyy vain kokonaislukuna, olen muotoillut taulukon solujen luvut kahden desimaalin tarkkuudella eli se ei ole syynä, vaan minun pitäisi saada muutettua ohjelmassa olevat luvut eri tyyppisiksi, ja ajattelin, että Currency tietotyyppi voisi olla paras.
Tässä koodinpätkiä selvennykseksi:

Private Sub CommandButton1_Click()
Range("E27").Select
TextBox1 = Range("E27")
End Sub

Private Sub CommandButton3_Click()
Label1.Caption = Val(TextBox1) * Val(TextBox2) / 100
Range("J35") = TextBox2 & "%"
End Sub

Private Sub CommandButton4_Click()
TextBox2 = " "
End Sub

Private Sub CommandButton6_Click()
Range("E30").Select
TextBox3 = Range("E30")
End Sub

Private Sub CommandButton1_Click()
Range("E27").Select
TextBox1 = Range("E27")
End Sub

Private Sub CommandButton3_Click()
Label1.Caption = Val(TextBox1) * Val(TextBox2) / 100
Range("J35") = TextBox2 & "%"
End Sub

Private Sub CommandButton6_Click()
Range("E30").Select
TextBox3 = Range("E30")
End Sub

Private Sub CommandButton7_Click()
Label2.Caption = Val(TextBox3) * Val(TextBox4) / 100
Range("J30") = TextBox4 & "%"
End Sub

Private Sub CommandButton11_Click()
Range("I35") = Val(Label1)
End Sub

Private Sub CommandButton12_Click()
Range("E30") = Val(Label2)
Range("I30") = Val(Label2)
End Sub

Private Sub CommandButton16_Click()
Range("I31") = Val(Label3)
End Sub

Private Sub CommandButton11_Click()
Range("I35") = Val(Label1)
End Sub

Private Sub CommandButton12_Click()
Range("E30") = Val(Label2)
Range("I30") = Val(Label2)
End Sub

Eli tuo Val-funktio ei käy tähän, koska sen desimaalierotin on piste ja Suomessa taas käytetään pilkkua, mutta en ole saanut millään koodilla muutettua tuota oikein, muuten tämä ohjelma kyllä toimii, mutta ne desimaaliluvut vain eivät, joita tarvitsisin ehdottomasti tässä lomakkeessa. Joten oisiko joku niin ystävällinen ja auttaisi minua tässä ongelmassa. Olisin ikionnellinen siitä, kiitos!
tv. epätoivoinen harrastelija
2225
Äänestä

Muut lukivat myös

Vastaukset 2

Vanhimmat

Oletko kokeillut visual basicista tuttuja funkkareita, kuten CDbl(text1.text), CInt(text1.text), CCur(text1.text); en ole kyllä sata varma niiden toimivuudesta excelissä

Äänestä
  • Kiitos neuvoista "koodaaja". Jouduin melko kauan tekemään töitä, että löysin oikean kohdan mihin laitan tietotyypin (tässä tapauksessa laitoin CDbl)ja nyt se sitten toimii, mutta tein myös hirveästi töitä tämän ohjelman kanssa, että sain sen toimimaan niillä desimaaliluvuilla.
    Terv. nyt:"onnellinen" harrastelija

    Äänestä

Kommentoi aloitusta


epätoivoinen harrastelija kirjoitti:

Hei!
Olen yrittänyt vaikka millä lailla muuttaa kokonaislukuja desimaaliluvuiksi, mutta en ole onnistunut. Ongelma on siinä, että minulla on Excelin VBA:n lomake, jossa syötän lukuja taulukosta ja lasken niistä tietyn prosentin, ja sitten se tietty luku tulostuu Labeliin, jossa vielä näkyy desimaalit, mutta kun sitten siirrän sen luvun takaisin taulukkoon, niin silloin se taulukossa näkyy vain kokonaislukuna, olen muotoillut taulukon solujen luvut kahden desimaalin tarkkuudella eli se ei ole syynä, vaan minun pitäisi saada muutettua ohjelmassa olevat luvut eri tyyppisiksi, ja ajattelin, että Currency tietotyyppi voisi olla paras.
Tässä koodinpätkiä selvennykseksi:

Private Sub CommandButton1_Click()
Range("E27").Select
TextBox1 = Range("E27")
End Sub

Private Sub CommandButton3_Click()
Label1.Caption = Val(TextBox1) * Val(TextBox2) / 100
Range("J35") = TextBox2 & "%"
End Sub

Private Sub CommandButton4_Click()
TextBox2 = " "
End Sub

Private Sub CommandButton6_Click()
Range("E30").Select
TextBox3 = Range("E30")
End Sub

Private Sub CommandButton1_Click()
Range("E27").Select
TextBox1 = Range("E27")
End Sub

Private Sub CommandButton3_Click()
Label1.Caption = Val(TextBox1) * Val(TextBox2) / 100
Range("J35") = TextBox2 & "%"
End Sub

Private Sub CommandButton6_Click()
Range("E30").Select
TextBox3 = Range("E30")
End Sub

Private Sub CommandButton7_Click()
Label2.Caption = Val(TextBox3) * Val(TextBox4) / 100
Range("J30") = TextBox4 & "%"
End Sub

Private Sub CommandButton11_Click()
Range("I35") = Val(Label1)
End Sub

Private Sub CommandButton12_Click()
Range("E30") = Val(Label2)
Range("I30") = Val(Label2)
End Sub

Private Sub CommandButton16_Click()
Range("I31") = Val(Label3)
End Sub

Private Sub CommandButton11_Click()
Range("I35") = Val(Label1)
End Sub

Private Sub CommandButton12_Click()
Range("E30") = Val(Label2)
Range("I30") = Val(Label2)
End Sub

Eli tuo Val-funktio ei käy tähän, koska sen desimaalierotin on piste ja Suomessa taas käytetään pilkkua, mutta en ole saanut millään koodilla muutettua tuota oikein, muuten tämä ohjelma kyllä toimii, mutta ne desimaaliluvut vain eivät, joita tarvitsisin ehdottomasti tässä lomakkeessa. Joten oisiko joku niin ystävällinen ja auttaisi minua tässä ongelmassa. Olisin ikionnellinen siitä, kiitos!
tv. epätoivoinen harrastelija

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu