secondo me dipende da questo pezzo di codice
codice:
...
If (squadra1 <> "") Then
   tmp_array(num_squadra1) = ""
   Exit Do
End If
...
Dove in pratica continui il ciclo finchè non trovi una squadra con il nome valorizzato( che quindi deve ancora giocare), con il problema che se c'è solo 1 squadra disponibile devi aspettare di estrarla casualmente.

Nel caso in qui trovi stringa vuota(squadra che ha già giocato) potresti cercare la prima squadra disponibile nell'array, in modo da limitare il numero di giri necessari per trovare una squadra valida.

codice:
...
while tmp_array(num_squadra1)=""
   if num_squadra1=ubound(tmp_array) then 
      num_squadra1=0 'se sono alla fine dell'array ritorno all'inizio
   else
      num_suqdra1=num_squadra1+1 'scorro array
   end if
wend
squadra1=tmp_array(num_squadra1)
tmp_array(num_squadra1) = ""
Exit Do
...
Ovviamente stessa cosa per la squadra2.