Formattazione autom...
 
Notifiche
Cancella tutti

La consultazione del forum è libera per tutti.

Per poter porre un quesito è invece necessario essere un utente registrato (clicca qui se non lo sei).

Tutti gli utenti che richiedono un supporto, come da REGOLAMENTO, sono caldamente invitati ad allegare un file di esempio con l'indicazione di quello che si desidera ottenere.

Formattazione automatica di un testo con due colori

4 Post
3 Utenti
0 Reactions
292 Visualizzazioni
Forum 1
(@marzio)
Post: 0
New Member
Avviatore di Topic
 

Buona sera a tutti, sono anni che vi seguo con profitto, ora ho un problema.

Come da esempio allegato dovrei formattare di colore diverso solo la fine di certe parole.

Una alla volta è semplice, ma con molte e automaticamente non ci riesco.

Grazie.

 

Versione di Excel
Sistema operativo
 
Postato : 17/02/2024 16:26
Etichette discussione
Marius44
(@marius44)
Post: 0
Moderatore
 

Ciao

Si può fare solo con VBA. Prova con questa macro (relativa al tuo esempio).

Bada che devi inserire in B1 le lettere finali che vuoi colorare

Option Explicit

Sub ColoraFinale()
Dim rng As Range, sString As String, rCell As Range, nAt As Long, lg As Integer
Set rng = Range("A2:A5")
sString = Cells(1, 2).Value
If sString = "" Then Exit Sub
rng.Font.ColorIndex = 1
  For Each rCell In rng
    lg = Len(rCell)
    With rCell
      nAt = InStr(.Text, sString)
      If nAt > 0 Then
        .Characters(Start:=lg - Len(sString) + 1, Length:=Len(sString)).Font.Color = RGB(255, 0, 0)
      End If
    End With
  Next
Set rng = Nothing
End Sub

Guarda che il codice sarebbe diverso se volessi colorare "parte" della parola all'interno della parola stessa (per esempio il primo th della parola thirtieth)

Prova e fai sapere.

Ciao,

Mario

 
Postato : 17/02/2024 18:08
gianfranco55
(@gianfranco55)
Post: 1797
Moderatore
 

ciao

Marius

questa è di Norman leggermente modificata

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Rng As Range, rcell As Range
    Dim i As Long, j As Long, iLen As Long

    Const sIntervallo As String = "A1:A10"   '<<=== Modifica
    Const iCaratteri As Long = 2

    Set Rng = Intersect(Me.Range(sIntervallo), Target)
    If Not Rng Is Nothing Then
        For Each rcell In Rng.Cells
            With rcell
            If Right(rcell, 2) = "th" Then
                iLen = Len(.Text) - 1
                .Characters(iLen, iCaratteri).Font.Color = vbRed
               End If
            End With
        Next rcell
    End If
End Sub
 
Postato : 17/02/2024 18:33
Marius44
(@marius44)
Post: 0
Moderatore
 

Ciao

@gianfranco55

Hai voglia se fai un giro in rete! Ne trovi una quantità industriale e, ovviamente, sono tutte simili.

Ciao,

Mario

 
Postato : 17/02/2024 18:35
Condividi:
My Agile Privacy
Questo sito utilizza cookie tecnici e di profilazione. Cliccando su accetta si autorizzano tutti i cookie di profilazione. Cliccando su rifiuta o la X si rifiutano tutti i cookie di profilazione. Cliccando su personalizza è possibile selezionare quali cookie di profilazione attivare.
Attenzione: alcune funzionalità di questa pagina potrebbero essere bloccate a seguito delle tue scelte privacy
     Scarica il nostro ebook gratuito     

Unisciti a oltre 35.000 professionisti
che hanno già scelto di semplificare il proprio lavoro
e aumentare la produttività con la nostra newsletter!

Scarica l’ebook con i
migliori trucchi e suggerimenti per Excel
selezionati per te da Excel Academy

Download