09. november 2005 - 11:50Der er
13 kommentarer og 2 løsninger
Had er galt med denne if...then...else
Hvad er galt med disse if sætninger
Sub BtnSPLaengdeHent_Click(sender As Object, e As EventArgs) Dim SP1, SP2, SP3, SP4, SP5
if TxtProduktlinieResultat.text = "cr" then SP1 = TxtULResultat.text*10 else SP1 = "Gennemgående" TxtSPLae1Resultat.text = SP1 end if
if TxtProduktlinieResultat.text = "cr, of" then SP2 = TxtULResultat.text*15/100 else SP2 = TxtULResultat.text*20 TxtSPLae2Resultat.text = SP2 end if
if TxtProduktlinieResultat.text = "pf, rc" then else if TxtProduktlinieResultat.text = "cr" then else if TxtProduktlinieResultat.text = "of" then SP3 = TxtULResultat.text*20 end if SP3 = TxtULResultat.text*15 End if SP3 = TxtULResultat.text*25 TxtSPLae3Resultat.text = SP3 end if
if TxtProduktlinieResultat.text = "pf, rc" then else if TxtProduktlinieResultat.text = "cr" then else if TxtProduktlinieResultat.text = "of" then SP3 = TxtULResultat.text*20 end if SP4 = TxtULResultat.text*15 End if SP4 = TxtULResultat.text*30 TxtSPLae4Resultat.text = SP4
end Sub
Lige gyldig hvad jeg sætter TxtProduktlinieResultat.text til, så tager den første linie i min if
Jeg har også prøvet med if TxtProduktlinieResultat.text = "cr" then SP1 = TxtULResultat.text*10 else SP1 = "Gennemgående" TxtSPLae1Resultat.text = SP1 end if
Kommunerne har digitaliseret indgangen for borgerne. Men bag skærmen håndteres mange arbejdsgange stadig manuelt mellem systemer, mails og organisatoriske siloer.
En textbox indeholder tekst. fx. Text1.text = "Banan" Du kan ikke skrive Text1.Text * 10 - det svarer til at skrive Banan*10 - det er svært at regne ud for en PC
Hvis du vil lave det der står i en textbox om til et tal, skal du først bruge Val()
Jeg har bytte rundt på det så mange gange for at få det til at virke. Jeg prøver lige en sidste gang. Kan jeg oppe i starten af sub - under dim skrive Val(Text1.Text)=X
Sub BtnSPLaengdeHent_Click(sender As Object, e As EventArgs) Dim SP1, SP2, SP3, SP4, SP5 if TxtProduktlinieResultat.text = "cr" then SP1 = val(TxtULResultat.text)*10 else SP1 = "Gennemgående" TxtSPLae1Resultat.text = SP1 end if
if TxtProduktlinieResultat.text = "cr, of" then SP2 = val(TxtULResultat.text)*15 else SP2 = val(TxtULResultat.text)*20 TxtSPLae2Resultat.text = SP2 end if
if TxtProduktlinieResultat.text = "pf, rc" then SP3 = val(TxtULResultat.text)*25 else if TxtProduktlinieResultat.text = "cr" then SP3 = val(TxtULResultat.text)*15 else if TxtProduktlinieResultat.text = "of" then SP3 = val(TxtULResultat.text)*20 end if End if TxtSPLae3Resultat.text = SP3 end if
if TxtProduktlinieResultat.text = "pf, rc" then SP4 = val(TxtULResultat.text)*30 else if TxtProduktlinieResultat.text = "cr" then SP4 = val(TxtULResultat.text)*15 else if TxtProduktlinieResultat.text = "of" then SP3 = val(TxtULResultat.text)*20 end if End if TxtSPLae4Resultat.text = SP4 End if
Jeg tror ikke du har helt styr på de der if-then-else sætninger - prøv at kik på mit svar af 12:06:19
Du kan med fordel bruge select case, når du tjekker den samme variabel for flere værdier. Copy-paste nedenstående, og se kommentarene:
Sub BtnSPLaengdeHent_Click(sender As Object, e As EventArgs)
Dim SP1 As String 'Når du kender variabeltypen. så brug den rigtige type! Dim SP2 As String Dim SP3 As String Dim SP4 As String Dim X 'as ... Long = heltal, double = decimaltal. Vælg det der passer
X = Val(TxtULResultat.Text) MsgBox "kontrol. X indeholder værdien : " & X MsgBox "kontrol. X indeholder værdien : " & TxtProduktlinieResultat.Text
Select Case TxtProduktlinieResultat.Text Case "cr" SP1 = CStr(X * 10) 'Cstr konverterer en værdi om til en streng SP2 = CStr(X * 15) SP3 = CStr(X * 15) SP4 = CStr(X * 15) Case "pf" Or "rc" 'Der sker det samme for pf som for rc SP1 = "Gennemgående" SP2 = CStr(X * 20) SP3 = CStr(X * 25) SP4 = CStr(X * 30) Case "of" SP1 = "Gennemgående" SP2 = CStr(X * 15) SP3 = CStr(X * 20) SP4 = CStr(X * 20) Case Else MsgBox "textboxen indeholder ikke 'pf','rc' eller 'cr'" End Select
Ret fra MsgBox "kontrol. X indeholder værdien : " & TxtProduktlinieResultat.Text til MsgBox "kontrol. TxtProduktlinieResultat.Text indeholder værdien : " & TxtProduktlinieResultat.Text
Erklær altid variabler som den rigtige type, hvis du har mulighed for det - skriver du ikek typen, bliver de automatisk erklæret som en "Variant".
Pas på med at blande strings og tal. Skriver du tallet 10 i en textbox, er det noget tekst der består af et et-tal og et nul - det er IKKE tallet 10. Derfor brugte jeg CStr()
Dine if-then-else struktur havde en del fejl. Se 09/11-2005 12:06:19
Dit program vil også give fejl, hvis du skriver "OF" i stedet for "of". Du kan bruge LCase(), så du slipper for denne fejl. hvis du vil. Altså skrive Select Case LCase(TxtProduktlinieResultat.Text)
Prøv at start et nyt spørgsmål. Og forklar præcis díne forudsætninger, og hvad du vil.
Synes godt om
Ny brugerNybegynder
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.