Codice:
	
	Sub Main()
    Dim ruota,pos,es,numero,ultimaEstrazione,estrazioneIniziale,estrazioneFinale
    Dim numeriRicerca(5),posizioni(5)
    Dim i,j,n,posIndex
    Dim conteggioNumeri(90),risultato(9,10)
    Dim valore
    Dim parole(150),colori(150),grassetti(150),indice,valoreReale
    Dim estratti(5),estrattiPrecedenti(5)
    Dim coloreRosso,coloreNero
    Dim coloraRossoPrecedenti(5),coloraRossoCorrenti(5)
    coloreRosso = vbRed
    coloreNero = vbBlack
    ruota = 5
    Scrivi "Ruota:(" & ruota & ")",True
    Scrivi
    ultimaEstrazione = EstrazioneFin()
    ' Intestazione allineata ai valori
    Scrivi "           0000000001 1111111112 2222222223 3333333334 4444444445 5555555556 6666666667 7777777778 8888888889",True
    Scrivi "           1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890",True
    Scrivi
    ' Inizializza estratti precedenti a zero
    For i = 1 To 5
        estrattiPrecedenti(i) = 0
    Next
    For k = 29 To 0 Step - 1
        estrazioneIniziale = ultimaEstrazione - k
        ' Recupera i numeri estratti per l'estrazione corrente
        For i = 1 To 5
            numeriRicerca(i) = Estratto(estrazioneIniziale,ruota,i)
        Next
        ' Salva gli estratti da visualizzare alla fine
        For i = 1 To 5
            estratti(i) = numeriRicerca(i)
        Next
        estrazioneFinale = estrazioneIniziale - 2900
        For n = 1 To 90
            conteggioNumeri(n) = 0
        Next
        ' Calcola il conteggio dei numeri nelle estrazioni
        For i = 1 To 5
            Dim contatoreOccorrenze
            contatoreOccorrenze = 0
            For es = estrazioneIniziale To estrazioneFinale Step - 1
                numero = Estratto(es,ruota,i)
                If numero = numeriRicerca(i) Then
                    contatoreOccorrenze = contatoreOccorrenze + 1
                    ' Calcolo per la decina della spia
                    Dim decinaSpia
                    decinaSpia = Int((numeriRicerca(i) - 1) / 10) ' Calcola la decina della spia
                    ' Verifica la posizione della spia
                    Dim posSpia
                    posSpia = i
                    ' Conta tutti i numeri appartenenti alla decina della spia nelle successive 12 estrazioni
                    For j = 1 To 12
                        If(es + j) <= estrazioneIniziale Then
                            For posIndex = 1 To 5
                                numero = Estratto(es + j,ruota,posIndex)
                                If numero > 0 And numero <= 90 Then
                                    ' Verifica se il numero appartiene alla stessa decina della spia
                                    If Int((numero - 1) / 10) = decinaSpia Then
                                        ' Controlla se la posizione è valida per la spia
                                        Dim posVerifica
                                        posVerifica =(posSpia + j - 1) Mod 5 + 1
                                        If posVerifica = posIndex Or posVerifica =((posIndex Mod 5) + 1) Then
                                            conteggioNumeri(numero) = conteggioNumeri(numero) + 1
                                        End If
                                    End If
                                End If
                            Next
                        End If
                    Next
                End If
                If contatoreOccorrenze >= 12 Then Exit For
            Next
        Next
        For i = 0 To 8
            For j = 1 To 10
                risultato(i,j) = conteggioNumeri(i * 10 + j)
            Next
        Next
        indice = 0
        parole(0) = DataEstrazione(estrazioneIniziale) & " " ' Aggiungi la data con uno spazio all'inizio
        colori(0) = coloreNero
        grassetti(0) = True
        indice = 1 ' Partiamo dall'indice 1 per i valori
        ' Ciclo per la creazione delle parole formattate e colorate
        For i = 0 To 8 ' Gruppi di 10 numeri
            For j = 1 To 10 ' Colonne
                valore = risultato(i,j)
                valoreReale = i * 10 + j ' Questo è il valore numerico che stiamo considerando (es. 1-90)
                If valore >= 10 Then
                    valore = Chr(65 +(valore - 10)) ' Converte valori >= 10 in A, B, etc.
                ElseIf valore = 0 Then
                    valore = "*" ' Sostituisce lo zero con un asterisco
                End If
                ' Gestione della colorazione tenendo conto degli spazi e dei valori alfanumerici
                If IsInArray(valoreReale,numeriRicerca) Then
                    colori(indice) = coloreRosso
                Else
                    colori(indice) = coloreNero
                End If
                ' Assicurati che valore sia corretto per la visualizzazione
                If IsNumeric(valore) Or valore = "*" Then
                    parole(indice) = FormatSpace(valore,0,False) ' Usa FormatSpace anche per *
                Else
                    parole(indice) = valore ' Aggiungi il valore letterale (A, B, C, ...)
                End If
                grassetti(indice) = True
                indice = indice + 1
            Next
            ' Aggiungi uno spazio ogni 10 numeri, ma senza spazio tra le presenze
            parole(indice) = " " ' Aggiungi lo spazio tra le decine
            colori(indice) = coloreNero
            grassetti(indice) = True
            indice = indice + 1
        Next
        ' Determina quali estratti colorare di rosso per l'estrazione corrente e precedente
        If k < 29 Then ' Solo se non è la prima iterazione
            For i = 1 To 5
                ' Verifica se la decina è la stessa nella stessa posizione estrazionale
                If Int((estratti(i) - 1) / 10) = Int((estrattiPrecedenti(i) - 1) / 10) Then
                    coloraRossoCorrenti(i) = True
                    coloraRossoPrecedenti(i) = True
                Else
                    coloraRossoCorrenti(i) = False
                    coloraRossoPrecedenti(i) = False
                End If
            Next
        End If
        ' Aggiungi gli estratti dell'estrazione corrente alla fine della riga con Format2 e separati da un punto
        For i = 1 To 5
            ' Colorazione per gli estratti dell'estrazione corrente
            If coloraRossoCorrenti(i) Then
                colori(indice) = coloreRosso
            Else
                colori(indice) = coloreNero
            End If
            parole(indice) = Format2(estratti(i)) & "."
            grassetti(indice) = True
            indice = indice + 1
        Next
        ' Memorizza i numeri correnti per la verifica nelle estrazioni successive
        For i = 1 To 5
            estrattiPrecedenti(i) = estratti(i)
        Next
        ' Stampa la riga con la data dell'estrazione, i valori colorati e gli estratti alla fine
        ScriviConColori parole,colori,grassetti
    Next
End Sub
Function IsInArray(valore,arr)
    Dim i
    IsInArray = False
    For i = LBound(arr) To UBound(arr)
        If arr(i) = valore Then
            IsInArray = True
            Exit Function
        End If
    Next
End Function
	
	

