Dar formato a letras y palabras dentro una celda de Excel usando vba y macros

He decidido crear este artículo y grabar un video paso a paso ya que en Facebook algunas personas publicaron un par de preguntas que se me hicieron interesantes:

  • Cómo hacer para darle formato a un carácter dentro de una celda.
  • Cómo hacer para darle formato a una palabra dentro de una cadena de texto.

Acto seguido me di a la tarea de programar una macro en VBA que hiciera las dos cosas: darle formato a una sola letra, número o una palabra completa, incluso a una cadena de más de una palabra.

Ver video Dar formato a letras y palabras dentro una celda de Excel

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Pasos a seguir (la lógica de programación)

Aunque puede parecer sencillo, el programar la macro implicó primero romperme un poco la cabeza en definir la lógica de cómo iba a trabajar. Entonces fue cuando después de varias pruebas llegué a pensar en los siguientes pasos, que posteriormente los iba a trasladar a código VBA:

  • Primero definimos el texto que se formateará.
  • Debemos saber cuántos caracteres hay en la celda o en el texto.
  • Luego pensamos en un carácter casi estemos seguros que no esté en el texto. El carácter ASCII número 1.
  • Si por ejemplo el texto que se formateará fue Excel, formamos una palabra con 5 letras, y esas 5 letras serán el carácter 1.
  • Buscamos en la celda todas las palabras que sean Excel y la sustituimos con la palabra de 5 letras con el carácter 1.
  • Ahora recorremos letra por letra y cuando encontremos el carácter 1, le damos el formato que deseemos.
  • Al final aplicamos todo lo anterior a un rango de celda.

Definimos el texto al que se aplicará formato.

Figura 1. Definimos el texto al que se aplicará formato.

Le aplicaremos color de texto rojo, tipo negrita y tamaño 12 al texto elegido, Excel. Además de volver a aplicar la macro, pero a la palabra Microsoft.

Resaltamos palabras aplicándoles un formato diferente al resto del texto.

Figura 2. Resaltamos palabras aplicándoles un formato diferente al resto del texto.

Código VBA de la macro

Option Explicit
'
'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
'http://blogs.itpro.es/exceleinfo
'http://www.exceleinfo.com/uso-de-colores-en-excel-con-macros/

Sub FormatearTextoEnCelda()
    
Dim intLargo As Integer
Dim strCaracter As String
Dim strPalabra As String
Dim Celda As Range
Dim strCaracterRept As String
Dim strSustituir As String
Dim i As Integer
Dim strValor As String

strPalabra = LCase(InputBox("Ingresa la letra, número o palabra a formatear.", "EXCELeINFO"))

Application.ScreenUpdating = False
Application.StatusBar = "Aplicando formato a texto..."

For Each Celda In Selection
    
    intLargo = Len(Celda)
    'strCaracter = "x"
    strCaracter = Chr(1)
    strCaracterRept = LCase(Application.WorksheetFunction.Rept(strCaracter, Len(strPalabra)))
    strSustituir = Application.WorksheetFunction.Substitute(LCase(Celda.Value), strPalabra, strCaracterRept)
    
    For i = 1 To intLargo
        'MsgBox Mid(strSustituir, i, 1)
        strValor = Mid(strSustituir, i, 1)
        If strValor = strCaracter Then
            With Celda.Characters(i, 1).Font
                .Size = 13
                .FontStyle = "Bold"
                .Color = vbBlue
            End With
        Else
        'Nada
        End If
    Next i
    
Next Celda
    
Application.StatusBar = False
Application.ScreenUpdating = True
    
End Sub

Descarga el archivo de ejemplo

Descargar el ejemplo Dar formato a letras y palabras dentro una celda de Excel – EXCELeINFO.zip

You may also like...