Mitt problem är att när Text1(0) "lost focus" så gäller ju "lost focus" för atta textrutorna i samma index. Suben kommer köras för alla kontroller. Du måste därför lägga in ett vilkor i en If: Den körs för alla kontroller, du måste kontrollera vilken rutan eventet gäller: Tack, så enkelt och så svårt att få bukt med. Såhär t.ex, nu måste du ange ett tal i Text1(0) innen du kan lämna rutan.Problem med textruta som liger i index
Vad jag ville göra är när Text1(0) "lost focus" så skall någonting uträttas, men inte när t ex Text1(1) "lost focus" eller Text1(2) "lost focus".
Så trots att jag skriver så här:
If Len(Text1(0)) = 3 Then
så körs suppen ialla fall. Vad gör jag?Sv: Problem med textruta som liger i index
<code>
Private Sub Text1_LostFocus(Index As Integer)
If Index = 1 Then
'Kod som skall inträffa när Text1(1) förlorar index
End If
End Sub
</code>
Eller Select Case sats
<code>
Private Sub Text1_LostFocus(Index As Integer)
Select Case Index
Case 1
'Kod som skall inträffa när Text1(1) förlorar index
End Select
End Sub
</code>
Istället för LostFocus eventet så är det ofta bättre att använda Validat eventet.Sv: Problem med textruta som liger i index
<code>
Private Sub Text1_LostFocus(Index As Integer)
Select Case Index
Case 0
'Om Text1(0)
Case 1
'Om Text1(1)
Case 2
'Om Text1(2)
End Select
End Sub
</code>
/JohanSv: Problem med textruta som liger i index
Har du lust att förklara funktionen "Validat eventet", så vore jag tacksam.
Har alldrig testat den tidigere, eller sett någon kod som nyttjar den.Sv: Problem med textruta som liger i index
<code>
Private Sub Text1_Validate(Index As Integer, Cancel As Boolean)
Select Case Index
Case 0
If Not IsNumeric(Text1(0).Text) Then
MsgBox "Du måste ange ett tal!", vbInformation
Cancel = True
End If
Case 1
'Om Text1(1)
Case 2
'Om Text1(2)
End Select
End Sub
</code>
/Johan