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.
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.
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
Dar formato a letras y palabras dentro una celda de Excel – EXCELeINFO.zip