allora
codice:
Call apri_connessione
Call apri_rsSQUADRE(56)
rsSQUADRE.MoveFirst
num_squadre = rsSQUADRE.RecordCount
ReDim lista_squadre(num_squadre)
ReDim tmp_array(num_squadre)
ind = 1
Do Until rsSQUADRE.EOF
    lista_squadre(ind) = rsSQUADRE("id_squadra")
    ind = ind + 1
    rsSQUADRE.MoveNext
Loop
num_giornate = num_squadre - 1
Conn_Calcetto.Execute "DELETE FROM CALENDARIO_APP"
Randomize
    For count = 1 To num_giornate
        For count1 = 1 To UBound(lista_squadre) 'Assegno l'arrey ad un arrey temporaneo
            tmp_array(count1) = lista_squadre(count1)
        Next count1
        Do
            Do
                num_squadra1 = Int((num_squadre * Rnd) + 1)
                squadra1 = tmp_array(num_squadra1)
                If (squadra1 <> "") Then
                    tmp_array(num_squadra1) = ""
                    Exit Do
                End If
                
            Loop
            
            Do
                Do
                    num_squadra2 = Int((num_squadre * Rnd) + 1)
                    squadra2 = tmp_array(num_squadra2)
                    If (squadra2 <> "") Then
                        Exit Do
                    End If
                Loop
                Call apri_rsCALEN_APP2(squadra1, squadra2) ' controllo se esiste l'incontro squadra1 vs squadra2 e viceversa
                If rsCALEN_APP2.EOF Or rsCALEN_APP2.BOF Then
                    Conn_Calcetto.Execute _
                        "INSERT INTO CAlendariO_APP( " & _
                        "GIORNATA, SQ_CASA, SQ_FUORI ) " & _
                        "VALUES( " & count & " , " & _
                        Int(squadra1) & " , " & Int(squadra2) & " ) ", dbFailOnError
                    incontro_creato = True
                Else
                    incontro_creato = False
                End If
                Call chiudi_rsCALEN_APP2
                If (squadra2 <> "") And (incontro_creato = True) Then
                    tmp_array(num_squadra2) = ""
                    Exit Do
                End If
            Loop
            continue = False
            For count1 = 1 To UBound(tmp_array) 'Controllo che nell'array esistano ancora squadre
                If tmp_array(count1) <> "" Then continue = True
            Next count1
            If continue = False Then Exit Do
        Loop

    Next count
Call chiudi_connessione
sembra funzionare
però a volte va in loop, penso che sia dovuto alla funzione random
mi puoi dare una mano a capire cosa può essere?