tempo fa mi avevate suggerito questa splendida soluzione per evidenziare solo le parole di un determinato vocabolario. Oggi avrei bisogno di chiedervi un aiuto per evidenziare invece solo la data che viene scritta così 18/9 (e/o 19/9 e/o 20/9...eccetera, la cella contiene un riassunto di determinati eventi durati nel tempo quindi queste compaiono contemporaneamente all'interno della medesima cella); mi basterebbe poterle trasformare in grassetto ma non essendo come nell'altro caso un range di poche variabili non saprei come modificare la macro: si può fare?
- Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myArea As String, myWords, myBold, myColors, myUnderl, mySize, myTarget
Dim myF, I As Long
'
myArea = "B1:B100" '<<< L' area in cui sara' effettuata la ricerca
'
If Application.Intersect(Target, Range(myArea)) Is Nothing Then Exit Sub
If Target.Count <> 1 Then Exit Sub
If IsError(Target.Value) Then Exit Sub
'
myTarget = Replace(Replace(Replace(Target.Value, ",", " "), ".", " "), "?", " ") & " "
Application.EnableEvents = False
'il mio dizionario di Parole, Grassetto, Sottolineato, Colore
myWords = Array("Rimpatriato", "Dimesso", "terza")
myBold = Array(1, 0, 1) '1=Si, 0=No
myUnderl = Array(0, 1, 0) 'idem
mySize = Array(0, 14, 0) '0=default, >0=imposta
myColors = Array(RGB(255, 0, 0), RGB(0, 255, 0), RGB(255, 255, 0))
'
'Ripristina formati:
Target.Font.FontStyle = "Normale" '<*
Target.Font.ColorIndex = xlAutomatic '<*
Target.Font.Underline = xlUnderlineStyleNone '<*
Target.Font.Size = Application.StandardFontSize '<*
'
'Ricerca e modifica:
For I = LBound(myWords, 1) To UBound(myWords, 1)
myF = InStr(1, myTarget, (myWords(I) & " "), vbTextCompare)
If myF > 0 Then
With Target.Characters(Start:=myF, Length:=Len(myWords(I))).Font
.Bold = myBold(I)
.Color = myColors(I)
If myUnderl(I) = 0 Then .Underline = xlUnderlineStyleNone Else .Underline = xlUnderlineStyleSingle
If mySize(I) > 0 Then .Size = mySize(I)
End With
End If
Next I
'
Application.EnableEvents = True
End Sub