Avatar billede qualon1 Nybegynder
21. november 2006 - 09:41 Der er 2 kommentarer

Parse string to single

Hej

Jeg er ved at lave et lille program hvor brugeren kan indtaste sin højde og vægt (til at beregne BMI). Det der bliver indtastet, gemmer jeg som string for at kan checke nogle ting ved den.
Mit problem er så at få den string, fx "22.2" omdannet til single datatype eller andet der kan holde en decimal
Et udklip:
' Dim variables
    Dim Weight As Single
    Dim Height As Single
    Dim inputWeight As String
    Dim inputHeight As String
    Dim BMI As Single
    Dim Respons(3) As String
    ' Make respons array
    Respons(0) = "undervægtig"
    Respons(1) = "normalvægtig"
    Respons(2) = "overvægtig"
    Respons(3) = "meget overvægtig"
   
    ' Get input
    inputWeight = TextWeight.Value
    inputHeight = TextHeight.Value
    ' Check if input if empty
    If inputWeight = "" Or inputHeight = "" Then
        MsgBox "Du skal udfylde både vægt og højde", vbApplicationModal, "Indtastnings fejl"
    Else
        ' erstart "," med "."
        inputWeight = Replace(inputWeight, ",", ".")
        inputHeight = Replace(inputHeight, ",", ".")
        ' lav til single
        Weight = inputWeight
        Height = inputHeight
Avatar billede shy Nybegynder
21. november 2006 - 09:54 #1
Jeg lavede denne lille test. Forskellen er at jeg beholder , (komma) som decimal seperator, hvorimod du erstatter komma med punktum. Men det har sikkert noget med dine regional settings på PC'en at gøre. Men prøv lige denne test:

Private Sub Test()
Dim sngValue As Single
Dim strValue1 As String
Dim strValue2 As String

strValue1 = "22,2"
strValue2 = "167,7"
sngValue = CSng(strValue2) * CSng(strValue1)
Debug.Print sngValue (Returns 3722,94)

strValue1 = "22.2"
strValue2 = "167.7"
sngValue = CSng(strValue2) * CSng(strValue1)
Debug.Print sngValue (Returns 372294)

End Sub
Avatar billede kabbak Professor
23. november 2006 - 19:32 #2
Lav denne for hver tekstbox. så behøver du ikke koden for komma


Private Sub TextWeight_KeyPress(KeyAscii As Integer)
If KeyAscii = 44 Then KeyAscii = 46
End Sub
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

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