Dovrebbe essere sufficiente aggiungere queste istruzioni (evidenziate in rosso):
Private Sub Worksheet_Change(ByVal Target As Range)
Dim valoreCellaAttiva As Variant
Dim valoreCellaFoglio2 As Variant
On Error Resume Next
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
If Not Intersect(Target, Range("B3:AX20")) Is Nothing Then
valoreCellaAttiva = Target.Value
valoreCellaFoglio2 = Sheets("PROPOSTE").Range(Target.Address).Value
If valoreCellaFoglio2 >= 6 And valoreCellaAttiva <> 7 Then
With Target
.Value = valoreCellaAttiva & " c"
.Characters(Len(valoreCellaAttiva) + 1, Len(" c")).Font.Superscript = True
End With
ElseIf valoreCellaAttiva > valoreCellaFoglio2 And valoreCellaFoglio2 < 6 Then
With Target
.Value = valoreCellaAttiva & " c\*"
.Characters(Len(valoreCellaAttiva) + 1, Len(" c\*")).Font.Superscript = True
End With
End If
End If
Application.EnableEvents = True
End Sub
He eliminato le dichiarazioni delle variabili "foglio1" e "Foglio2" in quanto non utilizzate.
Ho inserito un On Error Resume Next per evitare l'errore di overflow nel caso le celle modificate siano di un numero tale da mandare in errore di memoria Excel.
Edit: quei caratteri aggiunti, volendo, potrebbero essere formattati in modo diverso dal resto del testo (es. grassetto, rosso, diversa dimensione carattere.