› Sviluppare funzionalita su Microsoft Office con VBA › Evidenziazione testo
-
AutoreArticoli
-
Ciao a tutti,
cortesemente avrei bisogno di una macro, che poi assocerò ad un pulsante, che mi evidenzi precisamente le lettere EF ed un'altra che evidenzi CF. Per evidenziare intendo colorare di giallo il testo oppure, se più semplice, le intere celle che lo contengono.
Detto testo è unicamente presente nelle celle della colonna E; da precisare che nelle celle che lo contengono, ci sono scritte anche altre cose, per spiegarmi meglio indico un esempio: "872 EF" oppure "D20 CF".
Faccio notare, non so se importante, che il primo gruppo da tre caratteri è variabile quindi diverso ogni cella, la cosa che rimane fissa è CF oppure EF.
E' possibile tutto ciò ?
Grazie mille in anticipo a chi vorrà aiutarmi !!!
ciao
parte dalla riga 4 cambia se è un'altra
Sub Trova_testo_e_Colora_Stringa() Dim stringa As String Dim i As Long Dim uR As Long uR = Cells(Rows.Count, "E").End(xlUp).Row For i = 4 To uR stringa = Range("E" & i) trova = Right(stringa, 2) 'trovo le due ultime lettere If trova = "CF" Or trova = "EF" Then Range("E" & i).Font.ColorIndex = 6 End If Next End SubCiao, forse può bastarti anche la Formattazione Condizionale. Poi se invece vuoi legarlo ad un pulsante che lo premi quando ne hai bisogno, quello è un altro discorso. Se invece vuoi utilizzare la F.C. puoi provare a:
1) seleziona tutto il range di celle che t'interessa (anche l'intera colonna E se è necessario)
2) vai in Formattazione Condizionale, Nuova Regola, Utilizza una formula...., ne campo della formula ci scrivi: =SE(O(NON(VAL.ERRORE(RICERCA("CF";E1)));NON(VAL.ERRORE(RICERCA("EF";E1))));1;0)
3) in FORMATO scegli RIEMPIMENTO e poi il colore Giallo
Grazie Gianfranco, perfetto e grazie mille.
Provando la tua macro, però, mi è sorta una conseguente esigenza, sempre se possibile e per favore. Mi spiego:
vorrei inserire nella cella T51 la somma delle cifre (scritte in colonna "L") relative all'evidenziazione EF, ma condizione che nella medesima riga, colonna "M", vi sia scritto "Si".
Nella cella T55 la somma delle cifre (scritte in colonna "L") relative all'evidenziazione CF, ma condizione che nella medesima riga, colonna "M", vi sia scritto "Si".
Tutto ciò, nella stessa macro che quindi, come già fatto, evidenzi il testo ma poi simultaneamente sommi gli importi con le condizioni sopra riportate.
Spero di essermi spiegato, nel caso, appena puoi, fammi sapere se non ci sono riuscito.
Grazie ancora
Grazie mille per la tua risposta, ma preferisco l'utilizzo di una macro
Spero di essermi spiegato,
Allega un file di esempio con dati e risultato voluto messo a mano.
Allego file esempio come richiesto, grazie
Allegati:
You must be logged in to view attached files.ciao
per se stesso basta
Range("T51") = Application.WorksheetFunction.SumIfs(Range("L2:L100"), Range("M2:M100"), "SI", Range("E2:E100"), "*" & "EF")
Range("T55") = Application.WorksheetFunction.SumIfs(Range("L2:L100"), Range("M2:M100"), "SI", Range("E2:E100"), "*" & "CF")
ma tu hai diviso la mia macro in due parti
diciamo che andrebbe
Sub Evidenzia_CF() Dim stringa As String Dim i As Long Dim uR As Long uR = Cells(Rows.Count, "E").End(xlUp).Row For i = 2 To uR stringa = Range("E" & i) trova = Right(stringa, 2) 'trovo le due ultime lettere If trova = "CF" Then Range("L" & i).Font.ColorIndex = 3 Range("L" & i).Font.Bold = True Range("E" & i).Font.ColorIndex = 4 Range("E" & i).Font.Bold = True End If Next Range("T55") = Application.WorksheetFunction.SumIfs(Range("L2:L100"), Range("M2:M100"), "SI", Range("E2:E100"), "*" & "CF") End Sub Sub Evidenzia_EF() Dim stringa As String Dim i As Long Dim uR As Long uR = Cells(Rows.Count, "E").End(xlUp).Row For i = 2 To uR stringa = Range("E" & i) trova = Right(stringa, 2) 'trovo le due ultime lettere If trova = "EF" Then Range("L" & i).Font.ColorIndex = 3 Range("L" & i).Font.Bold = True Range("E" & i).Font.ColorIndex = 4 Range("E" & i).Font.Bold = True End If Next Range("T51") = Application.WorksheetFunction.SumIfs(Range("L2:L100"), Range("M2:M100"), "SI", Range("E2:E100"), "*" & "EF") End Subciao,
se può servire questa sub colora di giallo solo i caratteri CF ed EF ed effetua la somma richiesta
Sub ColoraParteTesto() Dim r As Integer, cella As Range, tot As Double For Each cella In Range("E2:E" & Range("E" & Rows.Count).End(xlUp).Row) If Right(cella, 2) = "CF" Or Right(cella, 2) = "EF" Then cella.Characters(Start:=Len(cella) - 1, Length:=2).Font.ColorIndex = 6 If cella.Offset(0, 8) = "Si" Then tot = tot + cella.Offset(0, 7) End If Next cella Range("T51") = tot End Sub -
AutoreArticoli
