Hej jag har tre checkboxar i mitt program och vill att man ska kunna gå åt sex olika håll. Nackdelen med din kod är att i varsta fall 18 jämförelse operationer genomförs. Om man istället använder binärt träd som förebild kan man begränsa det till tre jämförelse oavset utfall: Hej Hej Nu ska jag vara lite petig, Gessle. Hoppas inte du tar illa upp men jag skriver detta för att jag själv haft problem med sådant tidigare. ? tror du menade att jag skrev check men liten bokstav. Det fanns inte i min kod det där, skulle bara illustrera hur det såg ut, och hur jag ville att det skulle funka.If eller case
check1.value = 1
check2.value = 1
check3.value = 1
check1.value = 1
Check2.value = 0
Check3.value = 0
Check1.value = 1
Check2.value = 1
Check3.value = 0
check1.value = 0
check2.value = 1
check3.value = 0
check1.value = 0
Check2.value = 1
Check3.value = 1
Check1.value = 1
Check2.value = 0
Check3.value = 1
Hur ska jag lösa detta, försökte med en If stas men såg att jag inte skulle klara det. Otroligt tacksam för hjälp
AndersSv: If eller case
Varför skulle inte en if sats funka?
<code>
If Check1.Value = 1 And Check2.Value = 1 And Check3.Value = 1 Then
MsgBox "111"
ElseIf Check1.Value = 1 And Check2.Value = 0 And Check3.Value = 0 Then
MsgBox "100"
ElseIf Check1.Value = 1 And Check2.Value = 1 And Check3.Value = 0 Then
MsgBox "110"
ElseIf Check1.Value = 0 And Check2.Value = 1 And Check3.Value = 0 Then
MsgBox "010"
ElseIf Check1.Value = 0 And Check2.Value = 1 And Check3.Value = 1 Then
MsgBox "011"
ElseIf Check1.Value = 1 And Check2.Value = 0 And Check3.Value = 1 Then
MsgBox "101"
End If
</code>Sv: If eller case
<code>
If check1.Value Then
If check2.Value Then
If check3.Value Then
MsgBox "111"
Else
MsgBox "110"
End If
Else
If check3.Value Then
MsgBox "101"
Else
MsgBox "100"
End If
End If
Else
If check2.Value Then
If check3.Value Then
MsgBox "011"
Else
MsgBox "010"
End If
Else
If check3.Value Then
MsgBox "001"
Else
MsgBox "000"
End If
End If
End If
</code>Sv: If eller case
>If Check1.Value = 1 And Check2.Value = 1 And Check3.Value = 1 Then
Den konstruktionen är onödig och tidskrävande.
Om inte Check.Value = 1 så får progammet göra helt
onödiga kontroller på de övriga And.
Om man tänker på And lösning så är det bättre att skriva
If Check1.Value = 1 Then
If Check2.Value = 1 Then
If Check3.Value = 1 Then
osv osv.
mvh
SvenSv: If eller case
Tillåter mig att visa en annan möjlig lösning.
Option Explicit
Private Sub Command1_Click()
Dim tmpStr As String
tmpStr = Check1.Value & Check2.Value & Check3.Value
Select Case tmpStr
Case "111"
MsgBox tmpStr
Case "100"
MsgBox tmpStr
Case "110"
MsgBox tmpStr
Case "010"
MsgBox tmpStr
Case "011"
MsgBox tmpStr
Case "101"
MsgBox tmpStr
Case Else
MsgBox "Okänt alternativ" ' saknar "000" och "001"
End Select
End Sub
mvh
SvenSv: If eller case
Om man bestämmer sig för att allt ska heta samma sak, förutom siffror efter (ex: case1, case2 osv..)
Då är det bra och mer enkelt att hålla reda på när man skriver sin kod OM man tänker på att skriva på samma sätt.
Jag ser att du skrivit case med litet c ibland och stort C ibland.
Sådant KAN bli förvirrande om man använder till en lång kod.
Bara ett litet tips för att förenkla för sig själv när koderna tenderar att bli större i framtiden.
Ha en fin dag!Sv: If eller case
Men tack för tipset ändå
Med vänliga hälsningar
Anders