Ciao, per quanto riguarda il fatto di bloccare le textbox potresti seguire i consigli che ti hanno dato impostando la proprietà Locked=true, anche se, considerando che quando carichi i dati gli eventi che usi per l'inserimento si possono scatenare... forse, anche se comporta più lavoro, per la visualizzasione ti converrebbe usare delle label impostando il bordo a 3D..comunque sono gusti, vedi tu.

Per visualizzare l'ultimo record inserito, li dipende molto da come apri la tabella, se usi una query potresti impostare l'ordine sulla data di estrazione in modo decrescente, altrimenti quando apri la tabella fai un MoveLast tramite la proprietà del recordset.

Se vuoi permettere l'inserimento dello zero e anche ripetuto sulla stessa riga allora devi fare alcune modifiche:
codice:
Private Function CheckNumber(indexTxt As Integer) As Boolean
....
   For i = idxTxt To (idxTxt + 4)
      If (Not i = indexTxt) and (not val(Text1(i).Text)=0) Then
          If Text1(i).Text = Text1(indexTxt) Then
            CheckNumber = True
            Exit For
         End If
      End If
   Next
....
End Function

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 Then
          Text1(Index).Text = "0" & Text1(Index).Text
      End If

      If Val(Text1(Index).Text) < 0 Or Val(Text1(Index).Text) > 90 Then
          MsgBox "L'estrazione deve essere compresa tra 0 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
Le modifiche sono quelle in rosso... controlla magari meglio.. non le ho testate..