Come detto nel mio messaggio precedente, la Sub Worksheet_SelectionChange presente nel file che hai allegato è da eliminare perche’ 1) non fa nulla di utile e 2) manda in crash Excel perche’ la macro innesca altri SelectionChange all’infinito anzi fino al crash.
Poi ho capito che non ti piace la formattazione condizionale ma preferisci lavorare con codice macro; allora, partendo dalla tua Sub ColoraNumeriMeseAttuale ho derivato questa Sub ColoraNumeriMeseAttualeA:
- Codice: Seleziona tutto
Sub ColoraNumeriMeseAttualeA()
Dim ws As Worksheet
Dim rng As Range
Dim cell As Range
Dim meseAttuale As Integer
Dim i As Integer
' Imposta il riferimento al foglio di lavoro in cui si trovano i dati
Set ws = ThisWorkbook.Sheets("Calendar")
' Imposta il riferimento al range di celle in cui si desidera applicare la formattazione condizionata
Set rng = ws.Range("C6:I11") ' Aggiorna con il range di celle desiderato
' Ottieni il mese attuale
meseAttuale = Month(ws.Range("A3").Value)
' Verifica le celle precedenti al mese attuale e applica la formattazione “trasparente”
For Each cell In rng
If Not Month(cell.Value) = meseAttuale Then
‘ Debug.Print cell.Address(0, 0), Format(cell.Value, "dd-mmm-yy")
cell.Font.Color = RGB(255, 196, 0) ' Aggiorna con il colore Font desiderato
cell.Interior.Color = RGB(255, 196, 0) ' Aggiorna con il colore Interior desiderato
Else
cell.Font.Color = RGB(0, 0, 0) ' Formattazione “visibile”
End If
Next cell
ws.Range("C12").Value = VBA.Format(Date, "dddd d mmmm yyyy" & VBA.Format(Time, " - hh:mm:ss"))
End Sub
Avendo abolito la Sub Worksheet_SelectionChange rimane il problema di come avviare questa Sub ColoraNumeriMeseAttualeA, visto che le “caselle di selezione” con cui si imposta Anno e Mese del calendario non innescano nessun evento.
Si risolve tutto
associando la macro direttamente alle due “caselle di selezione” presenti nel foglio:
-tenendo premuto il tasto Contr, clicca sulla prima “casella di selezione” (del Mese)
-tasto dx sulla casella selezionata; scegli AssegnaMacro, seleziona Sub ColoraNumeriMeseAttualeA dall’elenco di macro disponibili
-tasto Esc per deselezionare la casella
-ripeti il processo con la seconda casella di selezione (dell’Anno)
Prova e fai sapere...
D:\DDownloads\[Nuovo Foglio di lavoro di Microsoft Excel.xlsm]Calendar