Avatar billede anderssk Nybegynder
08. marts 2006 - 20:49 Der er 13 kommentarer og
1 løsning

komma i formular

Hej

Jeg er ved at gå amok!!

Jeg har en formular hvor der skal tastes et beløb, der senere kommer ind i et excel ark.
Det fungerer som det skal, men...

Hvis beløbet er tastet på numpad tastaturet med , i stedet for . så spasser den helt ud over det.

Kan jeg på nogen måde ændre , til . når der tabuleres væk fra feltet?
eller er nogen stødt på en genial løsning.

Jeg kan ikke ændre reigonale settings på den excel2000 det afvikles på da der er spærret (afvikles på en tynd klient via citrix)
Avatar billede bak Seniormester
08. marts 2006 - 22:25 #1
prøv

TextBox1 = Excel.WorksheetFunction.Substitute(TextBox1.Value, ",", ".")
Range("A2").Value = TextBox1.Value
Avatar billede anderssk Nybegynder
09. marts 2006 - 08:47 #2
Yes. Det hjalp, men nu regner det bare forkert.
En udregning som denne:
TxtFakturering = (([TxtLøn] * 160.33) * [TxtPeriode]) * [TxtAntal]

giver 7.828.112,25
Det rigtige beløb er 78.281,12
Avatar billede supertekst Ekspert
09. marts 2006 - 09:53 #3
Alternativ:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    TextBox1.Text = Format(TextBox1.Text, "###,##0.00")      'testformat
    tal1 = Val(cleanTal(TextBox1.Text))
   
    Range("A2").Value = tal1            'evt. formatter cellen m/separator
End Sub
Private Function cleanTal(tal)
Dim f, nytal
    nytal = ""
    For f = 1 To Len(tal)
        If Mid(tal, f, 1) <> "." Then
            If Mid(tal, f, 1) = "," Then
                nytal = nytal + "."
            Else
                nytal = nytal + Mid(tal, f, 1)
            End If
        End If
    Next f
    cleanTal = nytal
End Function
Avatar billede anderssk Nybegynder
09. marts 2006 - 14:19 #4
hmm. Der er da sket et eller andet....
Nu giver det 782811225

Jeg har lagt din private function cleanTal ind.

Når man klikker på den knap der skal vise beløb afvikles følgende:


Private Sub CommandButton1_Click()
Dim tal1 As String
    If Ob1.Value = True Then
        TxtFakturering = (([TxtLøn] * 160.33) * [TxtPeriode]) * [TxtAntal]
    End If
    If Ob2.Value = True Then
        TxtFakturering = ((([TxtLøn] * 12) * 10) / 100) * [TxtAntal]
    End If
    If Ob3.Value = True And Ob4.Value = True Then
        TxtFakturering = ((([TxtLøn] * [TxtPeriode]) * 7.4) * [TxtAntal])
    End If
    If Ob3.Value = True And Ob5.Value = True Then
        TxtFakturering = ((([TxtLøn] * [TxtPeriode]) * 37) * [TxtAntal])
    End If
    If Ob3.Value = True And Ob6.Value = True Then
        TxtFakturering = ((([TxtLøn] * [TxtPeriode]) * 160.33) * [TxtAntal])
    End If
    TxtLøn = Excel.WorksheetFunction.Substitute(TxtLøn.Value, ",", ".")
    TxtLøn.Value = TxtLøn.Value
    TxtFakturering.Text = Format(TxtFakturering.Text, "###,##0.00")      'testformat
    tal1 = Val(cleanTal(TxtFakturering.Text))
    TxtFakturering.Value = tal1            'evt. formatter cellen m/separator
    Me.TxtFakturering.Visible = True
End Sub
Avatar billede supertekst Ekspert
09. marts 2006 - 15:39 #5
Jeg tror du skal prøve at Rem'e "substitute-sætningen" - ?
Avatar billede anderssk Nybegynder
09. marts 2006 - 17:43 #6
Eneste ændring er at txtløn står med , og ikke .
Beløbet i txtfakturering er det samme.
Avatar billede supertekst Ekspert
09. marts 2006 - 18:07 #7
Ok - hvordan indtaster du beløbet i formularen  - eksempel m/7.828.112,25
som 7828112,25 eller 7.828.112,25?
Avatar billede anderssk Nybegynder
09. marts 2006 - 18:47 #8
OK - vi går forbi hindanden..

Jeg taster i 3 felter
TxtLøn
TxtPeriode
TxtAntal

Det er kun TxtLøn der kan være med decimaltal og i så fald bliver det tastet med ,
Resultatet kommer i TxtFakturering
Avatar billede anderssk Nybegynder
09. marts 2006 - 18:49 #9
Det hele er i en formular.
Avatar billede supertekst Ekspert
10. marts 2006 - 08:49 #10
Har set nærmere på det - dette er måske bedre:

*** OBS Test-version***

Private Sub commandbutton1_click()
Dim tal1
'    If Ob1.Value = True Then
'        TxtFakturering = (([TxtLøn] * 160.33) * [TxtPeriode]) * [TxtAntal]
'    End If
'    If Ob2.Value = True Then
        TxtFakturering = ((([TxtLøn] * 12) * 10) / 100) * 10
'    End If
'    If Ob3.Value = True And Ob4.Value = True Then
'        TxtFakturering = ((([TxtLøn] * [TxtPeriode]) * 7.4) * [TxtAntal])
'    End If
'    If Ob3.Value = True And Ob5.Value = True Then
'        TxtFakturering = ((([TxtLøn] * [TxtPeriode]) * 37) * [TxtAntal])
'    End If
'    If Ob3.Value = True And Ob6.Value = True Then
'        TxtFakturering = ((([TxtLøn] * [TxtPeriode]) * 160.33) * [TxtAntal])
'    End If
   
'    TxtLøn = Excel.WorksheetFunction.Substitute(TxtLøn.Value, ",", ".")
'    TxtFakturering.Text = " 78.281,12"

    tal1 = cleanTal(TxtFakturering)
    TxtFak = Val(tal1)
     
    Range("B3").Value = Format(TxtFak, "###,##0.00")
    Range("B3").HorizontalAlignment = xlRight

End Sub
Private Function cleanTal(tal)
Dim f, nytal
    nytal = ""
    For f = 1 To Len(tal)
        If Mid(tal, f, 1) <> "." Then
            If Mid(tal, f, 1) = "," Then
                nytal = nytal + "."
            Else
                nytal = nytal + Mid(tal, f, 1)
            End If
        End If
    Next f
    cleanTal = nytal
End Function
Avatar billede anderssk Nybegynder
10. marts 2006 - 11:47 #11
Du vil stadig have det over i et ark før du formaterer det til valuta?
Resultatet skal komme i formularen (feltet txt.fakturering)
Avatar billede supertekst Ekspert
10. marts 2006 - 12:39 #12
Private Sub commandbutton1_click()
Dim tal1
   
'    If Ob1.Value = True Then
'        TxtFakturering = (([TxtLøn] * 160.33) * [TxtPeriode]) * [TxtAntal]
'    End If
'    If Ob2.Value = True Then
        TxtFakturering = ((([TxtLøn] * 12) * 10) / 100) * 10
'    End If
'    If Ob3.Value = True And Ob4.Value = True Then
'        TxtFakturering = ((([TxtLøn] * [TxtPeriode]) * 7.4) * [TxtAntal])
'    End If
'    If Ob3.Value = True And Ob5.Value = True Then
'        TxtFakturering = ((([TxtLøn] * [TxtPeriode]) * 37) * [TxtAntal])
'    End If
'    If Ob3.Value = True And Ob6.Value = True Then
'        TxtFakturering = ((([TxtLøn] * [TxtPeriode]) * 160.33) * [TxtAntal])
'    End If
    tal1 = cleanTal(TxtFakturering)

    TxtFakturering = Format(tal1, "###,##0.00")

    Range("A2").Value = TxtFakturering
    Range("A2").HorizontalAlignment = xlRight
End Sub
Private Function cleanTal(tal)
Dim f, nytal
    nytal = ""
    For f = 1 To Len(tal)
        If Mid(tal, f, 1) = "." Then
            nytal = nytal + ","
        Else
            nytal = nytal + Mid(tal, f, 1)
        End If
    Next f
    cleanTal = nytal
End Function
Avatar billede anderssk Nybegynder
10. marts 2006 - 20:10 #13
Du er for cool :-)
Tak
Avatar billede supertekst Ekspert
11. marts 2006 - 10:50 #14
Selv tak - her er så et svar!
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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