T tarfala Medlem sedan juli 2000 177 inlägg Frågan 26 okt. 2002 18:50 #1 vad är fel i följande kod(fungerar inte att summera variablerna,de
hamnar bara efter varann i summa textrutan)???
Option Explicit
Dim barn7 As Integer
Dim barn12 As Integer
Dim ungdom As Integer
Dim vuxen As Integer
Dim summa As Integer
Private Sub cmdbarn12_Click()
barn12 = barn12 + 1
txtbarn12 = barn12 * 30
End Sub
Private Sub cmdbarn7_Click()
barn7 = barn7 + 1
txtbarn7 = barn7 * 0
End Sub
Private Sub cmdsumma_Click()
txtsumma = txtvuxen + txtungdom + txtbarn12 + txtbarn7
End Sub
Private Sub cmdungdom_Click()
ungdom = ungdom + 1
txtungdom = ungdom * 50
End Sub
Private Sub cmdvuxen_Click()
vuxen = vuxen + 1
txtvuxen = vuxen * 80
End Sub
@nders Medlem sedan juni 2000 32 967 inlägg Om du hämtar värden från en textruta så behandlas de som strängar. Gör en typkonvertering.
Private Sub cmdsumma_Click()
txtsumma = CLng(txtvuxen) + CLng(txtungdom) + CLng(txtbarn12) + CLng(txtbarn7)
End Sub
Jag ser inte riktigt var de värdena kommer ifrån heller, men det kanske inte spelar någon roll.
Mvh,
T tarfala Medlem sedan juli 2000 177 inlägg tack, fungerar bra om alla variabler får ett värde ,men tex om bara två av variablerna har ett värde, kan man tilldela alla ett startvärde för att undvika fel???
@nders Medlem sedan juni 2000 32 967 inlägg Ja, kanske om man använder Iif().
Private Sub cmdsumma_Click()
txtsumma = IIf(IsNumeric(txtvuxen), CLng(txtvuxen), 0) + IIf(IsNumeric(txtungdom), CLng(txtungdom), 0) + IIf(IsNumeric(txtbarn12), CLng(txtbarn12), 0) + IIf(IsNumeric(txtbarn7), CLng(txtbarn7), 0)
End Sub
Mvh,
T tarfala Medlem sedan juli 2000 177 inlägg får samma fel i alla fall "runtime error '13' type mismatch"???
Marcus E Medlem sedan maj 2002 1 466 inlägg
tarfala skrev:
får samma fel i alla fall "runtime error '13' type mismatch"???
Du får "Type mismatch" eftersom IIf är en vanlig funktion och när man anropar en funktion körs alla argument i funktionen.
Ett sätt är att göra en konverteringsfunktion som kan se ut så här:
Private Function StrToLng(str As String) As Long
If (IsNumeric(str)) Then
StrToLng = CLng(str)
Else
StrToLng = 0
End If
End Function
Den används på följande sätt:
txtsumma = StrToLng(txtvuxen) + StrToLng(txtungdom) + StrToLng(txtbarn12) + StrToLng(txtbarn7)
@nders Medlem sedan juni 2000 32 967 inlägg Ja, just jäklar!
VB är lite dumt på det sättet ibland. Jag ber om ursäkt om jag ledde in på fel spår. ;)
Mvh,
T tarfala Medlem sedan juli 2000 177 inlägg vilka klippor det finns på WF
:) många :bire :bire till @nders och marcus E som tack för hjälpen