Jag har två vektorer med tio checkboxar i varje. Loopen ska söka igenom vektor för vektor vilken checkbox som är markerad och printa ut i t.ex. en picbox: första markerade checkboxen i första vektorn och första markerade checkboxen i andra vektorn, Sen gå vidare med första markerade checkboxen i första vektorn och andra markerade checkboxen i andra vektorn osv. OK? MEnar du så här? Tjena! Tack för tipsen. Om man inte fyller i får man påminnelse (msgbox). Så proceduren körs bara om båda är ifyllda. /Peter Kanon Hillqvist! Precis som jag ville ha det. Fast jag hajar inte varför man dimmar variabeln Check1 som CheckBox. Vad händer då? / Peter Istället för att använda två variabler av tal datatype och en For-sats. Använder jag for each satsen. Vilket istället går igenom objekten i en samling. Vilket är effektivare och snyggare. OK. Vidare i projektet. Kan man under procedurens gång utesluta vissa kombinationer. T.ex. om talen är lika så printas de inte ut. E ja jobbig nu eller? /Peter Inget är omöjligt: Funkar bra med Klarar du inte at lösa det själv? Fel-fel-fel. Naturligtvis har jag 11 kontroller i varje vektor annars hade jag ju inte behövt använda en bokstav istället för 10. (0-9 är ju 10st). /PeterSlinga för sökning
CheckBox1(0)
CheckBox2(0)
T.ex.
Om
Checkbox1(0).Value = True
Checkbox1(1).Value = True
Checkbox1(2).Value = True
Och
Checkbox2(2).Value = True
Checkbox2(3).Value = True
Vill jag att en loop söker igenom och skriver ut exemplet så här:
0 2
1 2
2 2
0 3
1 3
2 3
Att söka upp första boxen som är true kan man ju med Do Until men resten fixar jag inte.
/PeterSv: Slinga för sökning
Sv: Slinga för sökning
<code>
Dim Check1 As CheckBox
Dim Check2 As CheckBox
For Each Check2 In Checkbox2
If Check2.Value Then
For Each Check1 In Checkbox1
If Check1.Value Then
Debug.Print Check1.Index & " " & Check2.Index
End If
Next
End If
Next
</code>
Vad ska hända om det inte finns någon markerar i anntingen Checkbox1() eller Checkbox2()?Sv: Slinga för sökning
Inte helt säker på vad du egentligen är ute efter men du kan kanske ha den här lilla snutten att utgå ifrån
Koden förutsätter att du två arrayer med checkboxar, en listbox och en knapp på ett formulär.
<code>
Private Sub Command1_Click()
Dim nCheck2 As Long, nCheck1 As Long
List1.Clear
Do While nCheck2 < Check2.Count
Do While nCheck1 < Check1.Count
If Check1(nCheck1).Value Or Check2(nCheck2).Value Then
List1.AddItem Check1(nCheck1).Value & " " & Check2(nCheck2).Value
End If
nCheck1 = nCheck1 + 1
Loop
nCheck2 = nCheck2 + 1
nCheck1 = 0
Loop
End Sub
</code>
/AndersSv: Slinga för sökning
Sv: Slinga för sökning
Sv: Slinga för sökning
Sv: Slinga för sökning
Sv: Slinga för sökning
<code>
Dim Check1 As CheckBox
Dim Check2 As CheckBox
For Each Check2 In Checkbox2
If Check2.Value Then
For Each Check1 In Checkbox1
If Check1.Value Then
If Check1.Index <> Check2.Index Then
Debug.Print Check1.Index & " " & Check2.Index
End If
End If
Next
End If
Next
</code>Sv: Slinga för sökning
<code>
If Check1.Index <> Check2.Index Then
</code>
Nytt problem. Hur får jag Check1.Index (10) att bli en bokstav t.ex. X istället. Jag vill bara ha ett tecken åt gången i utskriften. /PeterSv: Slinga för sökning
<code>
Dim Check1 As CheckBox
Dim Check2 As CheckBox
Dim Names as Variant
Names = Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F")
For Each Check2 In Checkbox2
If Check2.Value Then
For Each Check1 In Checkbox1
If Check1.Value Then
If Check1.Index <> Check2.Index Then
Debug.Print Names(Check1.Index) & " " & Names(Check2.Index)
End If
End If
Next
End If
Next
</code>
Har inte testat men ungefär detta bör fungera. Har du et fast antal kontroller, eller kan det variera?Sv: Slinga för sökning