Bene, ora è tutto più chiaro, in pratica non hai necessità di inserire un valore in una determinata cella, alla fine della routine, ma che a seguito della selezione di una determinata cella la stessa sia colorata con colori in sequenza.
Per fare tutto ciò è necessario utilizzare l'evento SelectionChange del tuo foglio.
Con questo codice la cella utilizzata come appoggio è H1, in sequenza se in H1 c'è 1=blu, 2=rosso, 3=giallo, 4=verde, la macro verifica che sia selezionata una cella nel range A1:D13, in caso positivo la cella selezionata viene colorata con lo sfondo del colore in base al valore di H1. Nella cella K1 viene inserita la riga della cella selezionata, in L1 la colonna.
- Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveCell.Row >= 1 And ActiveCell.Row <= 13 And ActiveCell.Column >= 1 And ActiveCell.Column <= 4 Then
If Range("H1") = "" Or Range("H1") < 1 Or Range("H1") > 4 Then Range("H1") = 1
GIOC = Range("H1")
Select Case GIOC
Case 1
ActiveCell.Interior.ColorIndex = 5
Range("K1") = ActiveCell.Row
Range("L1") = ActiveCell.Column
Case 2
ActiveCell.Interior.ColorIndex = 3
Range("K1") = ActiveCell.Row
Range("L1") = ActiveCell.Column
Case 3
ActiveCell.Interior.ColorIndex = 6
Range("K1") = ActiveCell.Row
Range("L1") = ActiveCell.Column
Case 4
ActiveCell.Interior.ColorIndex = 4
Range("K1") = ActiveCell.Row
Range("L1") = ActiveCell.Column
End Select
If GIOC + 1 > 4 Then
Range("H1") = 1
Else
Range("H1") = GIOC + 1
End If
End If
End Sub
Le seguenti macro le devi associare a due diversi pulsanti e ti permettono di togliere il colore all'utlima cella selezionata (Sub Indietro) e togliere il colore a tutto il range A1:D13 inzializzando H1=1 (Sub Azzera).
- Codice: Seleziona tutto
Sub Indietro()
If Range("H1") <> "" And Range("L1") <> "" Then
Cells(Range("K1").Value, Range("L1").Value).Interior.ColorIndex = xlNone
If Range("H1") - 1 < 1 Then
Range("H1") = 4
Else
Range("H1") = Range("H1") - 1
End If
End If
Range("F1").Select
End Sub
Sub Azzera()
Range(Cells(1, 1), Cells(13, 4)).Interior.ColorIndex = xlNone
Range("H1") = 1
Range("F1").Select
End Sub
Prova e fai sapere
Ciao
Tribuno