Ciao, visto che questo thread si riaggancia alll'altro tuo thread http://forum.html.it/forum/showthrea...readid=858906,
Visto che tu usi array di controlli textBox, per ottimizzare il tutto e risolvere il tuo problema, ti posto un progetto che ho buttato giù al momento completo e ottimizzato per l'inserimento e controllo delle estrazioni..magari da rivedere e ottimizzarlo per le tue esigenze.

codice:
Option Explicit
Private Declare Function GetWindowLong Lib "User32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "User32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Const GWL_STYLE As Long = (-16)
Const ES_NUMBER As Long = &H2000

Dim defStyle As Long

Private Sub SetNumeric(tHwnd As Long)
   SetWindowLong tHwnd, GWL_STYLE, defStyle Or ES_NUMBER
End Sub

Private Sub SetTextNumber()
   Dim i As Integer
   For i = 0 To Text1.Count - 1
      SetNumeric Text1(i).hwnd
   Next
End Sub

'controlla che siano state inserite tutte le estrazioni
Private Function InserimentoOk() As Boolean
   Dim i As Integer
   InserimentoOk = True
   For i = 0 To Text1.Count - 1
      If Val(Text1(i)) = 0 Then
         InserimentoOk = False
         MsgBox "Non sono state inserite tutte le estrazioni!"
         Text1(i).SetFocus
         Exit For
      End If
   Next
End Function

Private Sub btnSalvaDati_Click()
   'prima di procedere al salvataggio dei dati, controlla che siano state inserite tutte le estrazioni
   If InserimentoOk Then
      'procedura per salvare i dati
   End If
End Sub

'controlla che non sia stato ripetuto il numero sulla stessa ruota
Private Function CheckNumber(indexTxt As Integer) As Boolean
   Dim i As Integer
   Dim idxTxt As Integer
   CheckNumber = False
   Select Case indexTxt
      Case 0 To 4
         idxTxt = 0
      Case 5 To 9
         idxTxt = 5
      Case 10 To 14
         idxTxt = 10
      Case 15 To 19
         idxTxt = 15
      Case 20 To 24
         idxTxt = 20
      Case 25 To 29
         idxTxt = 25
      Case 30 To 34
         idxTxt = 30
      Case 35 To 39
         idxTxt = 35
      Case 40 To 44
         idxTxt = 40
      Case 45 To 49
         idxTxt = 45
   End Select
   For i = idxTxt To (idxTxt + 4)
      If Not i = indexTxt Then
         If Text1(i).Text = Text1(indexTxt) Then
            CheckNumber = True
            Exit For
         End If
      End If
   Next
End Function

Private Sub Form_Load()
   'Inizializzazione delle textBox relative alle estrazioni, ad accettare solo numeri
   defStyle = GetWindowLong(Text1(0).hwnd, GWL_STYLE)
   SetTextNumber
End Sub

Private Sub Text1_Change(Index As Integer)
   If Len(Text1(Index)) = 2 Then
      'attenzione, la proprietà TabIndex delle textBox relative alle estrazioni,devono essere sequenziali dalla prima all'ultima 
      SendKeys "{TAB}", True
   End If
End Sub

Private Sub Text1_Validate(Index As Integer, Cancel As Boolean)
   'attenzione, la proprietà Maxlength delle textBox relative alle estazione, deve essere impostata a 2 
   If Len(Trim(Text1(Index).Text)) > 0 Then
      If Len(Text1(Index).Text) = 1 And Not Val(Text1(Index).Text) = 0 Then
         Text1(Index).Text = "0" & Text1(Index).Text
      End If
      If Val(Text1(Index).Text) < 1 Or Val(Text1(Index).Text) > 90 Then
         MsgBox "L'estrazione deve essere compresa tra 1 e 90"
         Text1(Index).Text = ""
         Cancel = True
      ElseIf CheckNumber(Index) Then
         MsgBox "Il numero [" & Text1(Index) & "] è già inserito!"
         Text1(Index).Text = ""
         Cancel = True
      End If
   End If
End Sub