Undrar om någon snäll själ kan hjälpa mig på traven. Skriv Checkboxarnas inviduella värde i deras Tag property Tack SvenPon Ja så blir det ju. Vi måste lägga in en Ifsats som kollar om <code> Tack för hjälpen...det fungerade.... Tycker du skall anropa en Sub som har en loop låt oss kalla den "Addera" Tack Sven-Pon.. Nu får du vara vänlig och testköra denna kod annars blir jag trött på dig.checkbox + text1
Har 5 st checkboxar i frmbiljett, check1, check2 osv, sedan har jag en textbox i frmfors. Kryssar jag för check1 så vill jag att det skall visas en summa i text1 (tex 40 kr), kryssar jag sedan i check5 så vill jag att datorn skall visa summan ifrån check1+5 i text1. dvs check1+check5=text1. Någon som förstår och kan vill hjälpa mig?
Jag har fått ihop så att en check visas i text1 men inte om jag väljer flera checkboxar.Sv: checkbox + text1
Sen adderar du på sedvanligt sätt genom att omvandla till Currency eller Int
Dim chValue As Currency
chValue = CCur(Checkbox1.Tag) + CCur(CheckBox2.Tag)
Text1.Text = CStr(chValue)Sv: checkbox + text1
Om jag använder ovan kod så blir det lite fel ändå.. Kryssar jag för check1 så blir det ändå summan ifrån check1 och chekc2 som visas i text1. Gör jag något fel?
Är inte rikigt på den nivån ännu just när det gäller detta, men kommer kanske snart dit.Sv: checkbox + text1
tex Check1 resp Check2 :s osv Value är 1 .Dvs du skall addera alla
som har Value = 1 (det betyder att du kryssat dom)Sv: checkbox + text1
Dim sum As Integer
sum = 0
If Check1.Value Then sum = sum + CInt(Check1.Tag)
If Check2.Value Then sum = sum + CInt(Check2.Tag)
If Check3.Value Then sum = sum + CInt(Check3.Tag)
If Check4.Value Then sum = sum + CInt(Check4.Tag)
If Check5.Value Then sum = sum + CInt(Check5.Tag)
Text1.Text = sum
</code>
Om du sätter checkboxarna i en array (ändrar index-egenskapen, och döper alla till samma namn) så kan du loopa igenom nästan hur många check-boxar som helst.
<code>
Dim sum As Integer, i As Integer
sum = 0
For i = Check1.LBound To Check1.UBound
If Check1(i).Value Then sum = sum + CInt(Check1(i).Tag
Next i
Text1.Text = sum
</code>Sv: checkbox + text1
Om det är så att man klickar för både check1 och check2 så blir värdet 100 men när man klickar bort check2 så skall bara värdet för check1 stå kvar...i mina försöka så raderas alltihoipa...jag får inte ihop det...några förslag?Sv: checkbox + text1
Sen gör du Call Addera vid alla dom tillfälle du gör Change i CheckBoxarna
<code>
Private Sub Addera()
'MizardX utmärkta förslag
Dim sum As Long, i As Long
For i = Check1.LBound To Check1.UBound
If Check1(i).Value Then sum = sum + CLng(Check1(i).Tag)
Next 'i
Text1.Text = sum
End Sub
</code>
Sluta att använda Integer i VB 6. I alla moderna språk betyder Integer det Vi kallar Long.
Dvs i VB 6 använd alltid Long.I tex .net Delphi mfl. heter det Integer och är detsamma som vårt VB6 Long
32 bitars processoer "skyfflar" alltid omkring det som motsvarar Long i varje klockpuls.
Om du skriver Integer i VB 6 så blir det extra onödigt arbete att vaska fram Integer delen.Sv: checkbox + text1
Som jag skrev ovan så har jag inte så stor kunskap i detta just nu...hur menar du?
Jag är väldgit nollställd på mycket i VB för tillfället...Sv: checkbox + text1
<code>
Option Explicit
Private Sub Check1_Click(Index As Integer)
Call Addera
End Sub
Private Sub Addera()
'MizardX utmärkta förslag
Dim sum As Long, i As Long
For i = Check1.LBound To Check1.UBound
If Check1(i).Value Then sum = sum + CLng(Check1(i).Tag)
Next 'i
Text1.Text = sum
End Sub
</code>