Avatar billede tvc Seniormester
06. maj 2006 - 21:50 Der er 9 kommentarer og
1 løsning

Problemer med at skrive decimaler i celle via formular

Hej

Jeg har et problem med formateringen af mine værdier og den værdi min formular skriver ned i min Excel celle.

Når jeg i min formular i eksempelvis tekstfeltet txtFST skriver 5,55 så skriver den kun de 5,00.

Jeg anvender nedenstående koder. En til at skrive mine indtastede værdier ned i regnearket og en til at opdatere af formularen.

Hvad er der galt?

-----------------------------

Private Sub cmdGem_Click()
           
            Range("FSTuge").Value = Val(txtFSTuge.Value)
            Range("Stam_FST").Value = Val(txtFST.Value)
            Range("Stam_FSP").Value = Val(txtFSP.Value)
            Range("Stam_100P").Value = Val(txt100P.Value)
           
End Sub


Sub UpdateFlex()

'Opdatering af stamoplysninger
 
    txtFSTuge.Value = Range("FSTuge").Value
        txtFSTuge = Format(txtFSTuge, "#,##0")
    txtFST.Value = Range("Stam_FST").Value
        txtFST = Format(txtFST, "#,##0.00")
    txtFSP.Value = Range("Stam_FSP").Value
        txtFSP = Format(txtFSP, "#,##0.00")
    txt100P.Value = Range("Stam_100P").Value
        txt100P = Format(txt100P, "#,##0.00")
   
End Sub

Hilsen

TVC
Avatar billede excelent Ekspert
06. maj 2006 - 23:07 #1
prøv med Str : fx.

Range("FSTuge").Value = Str(Val(txtFSTuge.Value))
Avatar billede tvc Seniormester
06. maj 2006 - 23:20 #2
Det virker desværre ikke. Den fjerner stadig mine decimaler:

Hele min kode ser således ud for formularen.




Private Sub cmdInterneTimer_Click()
    frmOpgørelse_InterneTimer.Show
End Sub

Private Sub cmdRediger_Click()
    Rediger
End Sub

Private Sub cmdGem_Click()
            Range("Tår").Value = txtÅr.Value
           
            Range("SatsT").Value = txtSatsT.Value
           
            Range("Sats0").Value = txtSats0.Value
            Range("Sats1").Value = txtSats1.Value
            Range("Sats2").Value = txtSats2.Value
            Range("Sats3").Value = txtSats3.Value
            Range("Sats4").Value = txtSats4.Value
            Range("Sats5").Value = txtSats5.Value
               
            Range("Sats1fra").Value = txtfrauge0.Value
            Range("Sats2fra").Value = txtfrauge1.Value
            Range("Sats3fra").Value = txtfrauge2.Value
            Range("Sats4fra").Value = txtfrauge3.Value
            Range("Sats5fra").Value = txtfrauge4.Value
            Range("Sats6fra").Value = txtfrauge5.Value
           
            Range("FSTuge").Value = Val(txtFSTuge.Value)
            Range("Stam_FST").Value = Val(txtFST.Value)
            Range("Stam_FSP").Value = Val(txtFSP.Value)
            Range("Stam_100P").Value = Val(txt100P.Value)
           
            Gem
End Sub

Sub Rediger()
            txtÅr.Enabled = True
   
            txtSatsT.Enabled = True
       
            txtSats0.Enabled = True
            txtSats1.Enabled = True
            txtSats2.Enabled = True
            txtSats3.Enabled = True
            txtSats4.Enabled = True
            txtSats5.Enabled = True
           
            txtfrauge0.Enabled = True
            txtfrauge1.Enabled = True
            txtfrauge2.Enabled = True
            txtfrauge3.Enabled = True
            txtfrauge4.Enabled = True
            txtfrauge5.Enabled = True
               
            txtFSTuge.Enabled = True
            txtFST.Enabled = True
            txtFSP.Enabled = True
            txt100P.Enabled = True
           
        cmdRediger.Visible = False
        cmdGem.Visible = True
End Sub

Sub Gem()
            txtÅr.Enabled = False
   
            txtSatsT.Enabled = False
       
            txtSats0.Enabled = False
            txtSats1.Enabled = False
            txtSats2.Enabled = False
            txtSats3.Enabled = False
            txtSats4.Enabled = False
            txtSats5.Enabled = False
           
            txtfrauge0.Enabled = False
            txtfrauge1.Enabled = False
            txtfrauge2.Enabled = False
            txtfrauge3.Enabled = False
            txtfrauge4.Enabled = False
            txtfrauge5.Enabled = False
               
            txtFSTuge.Enabled = False
            txtFST.Enabled = False
            txtFSP.Enabled = False
            txt100P.Enabled = False

        cmdRediger.Visible = True
        cmdGem.Visible = False
       
        UpdateFlex
End Sub

Private Sub cmduka_Click()
    frmOpgørelse_uks.Hide
    frmOpgørelse_uka.Show
End Sub

Private Sub cmduks_Click()
    frmOpgørelse_uka.Hide
    frmOpgørelse_uks.Show
End Sub


Private Sub UserForm_Activate()
    UpdateFlex
    Gem
End Sub
     
Sub UpdateFlex()

'----- Opdatering af Flexsaldo og feriesaldo -----

    lblFeriesaldoP.Caption = Format(Range("FeriesaldoP").Value, "#,##0.00")
    lblFeriesaldoT.Caption = Format(Range("FeriesaldoT").Value, "#,##0.00")
    lblFeriesaldoI.Caption = Format(Range("FeriesaldoI").Value, "#,##0.00")
    lblAfholdtFerie.Caption = Format(Range("AfholdtFerie").Value, "#,##0.00")
    lblFeriesaldoU.Caption = Format(Range("FeriesaldoU").Value, "#,##0.00")
    lblAfholdtEgenRegning.Caption = Format(Range("AfholdtEgenRegning").Value, "#,##0.00")

    lblFlexP.Caption = Format(Range("FlexP").Value, "#,##0.00")
    lblOpspar0.Caption = Format(Range("Opsparet0").Value, "#,##0.00")
    lblOpspar50.Caption = Format(Range("Opsparet50").Value, "#,##0.00")
    lblOpsparI.Caption = Format(Range("OpsparetIAlt").Value, "#,##0.00")
    lblAnvendt.Caption = Format(Range("AnvendtFI03").Value, "#,##0.00")
    lblOverarbS.Caption = Format(Range("OverarbSaldo").Value, "#,##0.00")
   
    lblUger.Caption = Range("AntalUger").Value
    lblDage7.Caption = Range("AntalDage7").Value
    lblDage6.Caption = Range("AntalDage6").Value
    lblLøntilsvar.Caption = Format(Range("Løntilsvar").Value, "#,##0.00")
   

'Opdatering af stamoplysninger

    txtÅr.Value = Range("Tår").Value
   
    txtSatsT.Value = Range("SatsT").Value
   
    txtSats0.Value = Range("Sats0").Value
    txtSats1.Value = Range("Sats1").Value
    txtSats2.Value = Range("Sats2").Value
    txtSats3.Value = Range("Sats3").Value
    txtSats4.Value = Range("Sats4").Value
    txtSats5.Value = Range("Sats5").Value


    txtfrauge0.Value = Range("Sats1fra").Value
    txtfrauge1.Value = Range("Sats2fra").Value
    txtfrauge2.Value = Range("Sats3fra").Value
    txtfrauge3.Value = Range("Sats4fra").Value
    txtfrauge4.Value = Range("Sats5fra").Value
    txtfrauge5.Value = Range("Sats6fra").Value
   
    txttiluge0.Caption = "til uge " & Range("Sats1til").Value
    txttiluge1.Caption = "til uge " & Range("Sats2til").Value
    txttiluge2.Caption = "til uge " & Range("Sats3til").Value
    txttiluge3.Caption = "til uge " & Range("Sats4til").Value
    txttiluge4.Caption = "til uge " & Range("Sats5til").Value
    txttiluge5.Caption = "til uge " & Range("SidsteUge").Value
   
    txtFSTuge.Value = Range("FSTuge").Value
        txtFSTuge = Format(txtFSTuge, "#,##0")
    txtFST.Value = Range("Stam_FST").Value
        txtFST = Format(txtFST, "#,##0.00")
    txtFSP.Value = Range("Stam_FSP").Value
        txtFSP = Format(txtFSP, "#,##0.00")
    txt100P.Value = Range("Stam_100P").Value
        txt100P = Format(txt100P, "#,##0.00")
   
End Sub
Avatar billede excelent Ekspert
06. maj 2006 - 23:38 #3
kan du ikke undlade at bruge Val

Val("5,55")  gir 5

prøv denne :

Sub test()
Dim x
x = "5,56"
[a1].Value = Val(x)
[a2].Value = Str(x)
End Sub
Avatar billede bak Forsker
07. maj 2006 - 00:33 #4
Prøv at bruge CDbl istedet for val
  Range("FSTuge").Value = CDbl(txtFSTuge.Value)
Avatar billede tvc Seniormester
07. maj 2006 - 11:35 #5
Hej begge

Begge jeres forslag virker. Men hvad er forskellen på Str og CDbl?

Hilsen

TVC
Avatar billede bak Forsker
07. maj 2006 - 12:37 #6
C-funktionerne er beregnet til at konvertere mellem datatyper. De bør bruges fremfor Val, især når man ikke kører amerikansk system.

Hvorfor Str fungerer, er faktisk lidt mystisk, idet Str er beregnet til at konvertere en værdi til en streng.
Avatar billede tvc Seniormester
07. maj 2006 - 15:29 #7
Hej Bak

Der løste du så det problem som Str medførte. Jeg kunne ikke forstå hvordan 200,50 indtastet i min formular første gang jeg lod data fra formularen skrive i arket viste 200,50 og hvis jeg så åbnede formularen igen og ændrede andre steder i formularen blev de 200,50 pludselig til 2005,00.

Jeg har nu rettet Str til CDbl og nu virker det hele.

Excelent -> Tak for dit bud, men jeg tror det er Bak der denne gang skal have point - håber det er i orden ;-)

Bak smider du et svar?

Tak for hjælpen

TVC
Avatar billede bak Forsker
07. maj 2006 - 17:36 #8
ok :-)
Avatar billede bak Forsker
07. maj 2006 - 17:36 #9
og så lige et svar....
Avatar billede excelent Ekspert
07. maj 2006 - 17:59 #10
naturligvis :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester