Avatar billede Nicolai Nybegynder
07. marts 2006 - 10:57 Der er 4 kommentarer og
1 løsning

Format for TextBox

Jeg har problemer med følgende:

Når en bruger indtaster en værdi i en tekstboks vil jeg gerne have at tekstboksen ved "Lost Focus" formattere teksten med 1.000-tals seperator. Derfor har jeg indsat følgende i "Lost Focus" på cellen:

OCCost.Text = Format(Val(OCCost.Text), "0,##")

Dette virker fint nok, og den displayer nu værdien med 1.000 tals seperator. Men når jeg så besøger tekstboksen igen, og Lost Focus udføres igen ser den 1.000 tals seperatoren som decimal-seperator og "dividere" derfor tallet med 1.000 i Lost Focus rutinen.

Exempel:

1) 200000 indtastes i tekstboks
2) LostFocus rutine skriver nu tallet som 200.000
3) Hvis en ny lostfocus rutine udføres skrives ændres cellens værdi til 200, idet "." ses som deceimal og ikke 1.000 tals sep.

Hvad kan jeg gøre?

Takker...
Avatar billede Nicolai Nybegynder
07. marts 2006 - 11:01 #1
Jeg er klar over at følgende kan løse problemet, men går ligesom ikke rigtig hvis jeg skal bruge tallene efterfølgende:

If Val(OCCost(i).Text) > 999 Then
OCCost(i).Text = Format(Val(OCCost(i).Text), "0,##")
Else
End If

Jeg har kigget på Masked Edit Control, men da den ikke kan Right Aligne er den uinteressant.

Jeg skal bruge tekstboksen til at inputte tal, der skal indgå i en større beregning. Så det er vigtigt at jeg beholder værdien.
Avatar billede supertekst Ekspert
08. marts 2006 - 08:29 #2
Du skal slette Val fra Format-sætningen  - også derefter i forbindelse med beregninger - anvende Val igen: Tal1 = Val(OCCOST.Text)
Avatar billede supertekst Ekspert
08. marts 2006 - 08:50 #3
Ups - tilføjelse - "nissen flytter med" - når du anvender VAL - derfor:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    TextBox1.Text = Format(TextBox1.Text, "###,##0.00")
   
    tal1 = Val(cleanTal(TextBox1.Text))
End Sub
Private Function cleanTal(tal)        'Fjerner 1000-. og ombytter , med .
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 Nicolai Nybegynder
05. september 2006 - 13:35 #4
Super det lykkedes - Lægger du et svar?
Avatar billede supertekst Ekspert
05. september 2006 - 13:45 #5
Det var glædeligt - så er her svaret...
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
Kurser inden for grundlæggende programmering

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