Avatar billede stof Nybegynder
31. marts 2011 - 12:31 Der er 10 kommentarer og
2 løsninger

Omdanne fx. strengen 4,22+122-234+2,0 til facit

Hej. Mit spørgsmål er egentlig meget simpelt. Jeg har ovenstående streng jeg gerne ville ændre til et facit.

Jeg har lavet følgende hvor jeg splitter op mht. "+". Men kan ikke finde ud af hvad jeg gør for -.:

        avarSplit = Split(txtIndtastBelob.Value, "+")
        For intIndex = LBound(avarSplit) To UBound(avarSplit)
            total = total + avarSplit(intIndex)
        Next

Håber du kan hjælpe.
Avatar billede js_delphi Nybegynder
31. marts 2011 - 13:16 #1
Hvilken fejl faar du?
Avatar billede tjp Mester
31. marts 2011 - 13:21 #2
Hvis du bruger Microsoft Script Control 1.0, kan du lave noget a la:

Dim SC As New ScriptControl

SC.Language = "vbscript"
Debug.Print SC.Eval("4.22+122-234+2.0")

NB decimal separator skal være '.', ikke ','.
Avatar billede stof Nybegynder
31. marts 2011 - 14:45 #3
js_delphi -> Jeg får ingen fejl på den kode jeg har skrevet. Den løser bare blot de udregninger med +.

tjp -> Er ny i VB.. Er det ligetil at bruge? og kræver det installering?
Avatar billede tjp Mester
31. marts 2011 - 15:22 #4
I VBA kræver det blot en reference til 'Microsoft Script Control 1.0' under 'Tools > References...'

Se evt her:
http://support.microsoft.com/kb/184740
Avatar billede tjp Mester
31. marts 2011 - 15:27 #5
I VS er det vist noget med 'Project->Add Reference' og så vælge 'Microsoft Script Control 1.0' på COM tab'en.

Dim sc As New MSScriptControl.ScriptControl
Avatar billede kabbak Professor
31. marts 2011 - 21:27 #6
Dim X
X = "4,22+122-234+2,0"
X = Replace(X, ",", ".") ' VB briger punktum som decimaladskiller
X = Evaluate(X)
Avatar billede kabbak Professor
31. marts 2011 - 21:50 #7
Nåå, det var VBA
her er i VB6

Dim x
Dim objScript As Object

  Set objScript = CreateObject("MSScriptControl.ScriptControl")
    objScript.Language = "VBScript"
    x = "4,22+122-234+2,0"
    x = Replace(x, ",", ".") ' VB bruger punktum som decimaladskiller
    MsgBox objScript.Eval(x)
Avatar billede tjp Mester
01. april 2011 - 11:15 #8
Det er nok hip som hap om man bruger:
Dim sc As New MSScriptControl.ScriptControl
eller:
Set objScript = CreateObject("MSScriptControl.ScriptControl")
Begge virker vist i VB6... :-)

Til gengæld kan 'x = Replace(x, ",", ".")' gi problemer hvis punktum benyttes som 1000-tals adskiller.
Måske en 'x = Replace(x, ".", "")' før 'x = Replace(x, ",", ".")' såfremt der er sikkert at komma benyttes til decimaladskiller.
Avatar billede stof Nybegynder
30. april 2011 - 14:27 #9
Hej.
Kabbak og tjp: Vil I ikke begge to lave et svar?

På forhånd tak!
Avatar billede kabbak Professor
30. april 2011 - 20:24 #10
ok
Avatar billede tjp Mester
30. april 2011 - 22:26 #11
Og ok... :-)
Avatar billede tjp Mester
30. april 2011 - 22:27 #12
sku måske lige sætte den på svar, tsk tsk..
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