Bienvenido a SuperUser. VBA no es tan aterrador como puede parecer al principio, y este es un gran proyecto para comenzar a comprender algunas funciones.
Primero, debe habilitar la pestaña Desarrollador en Excel .
1 - Haz clic en la pestaña Archivo.
2 - Haga clic en Opciones.
3 - Haga clic en Personalizar cinta de opciones.
4- En Personalizar la cinta de opciones y en Pestañas principales, seleccione la casilla de verificación Desarrollador.
A continuación, presione Alt + F11 para abrir el editor VBA, luego cree "Nuevo módulo" seleccionándolo en el menú desplegable que se muestra aquí:
Pegue el siguiente código en la nueva ventana que se abre. (parece mucho, pero no hay demasiado cuando empiezas a trabajar con él)
'The following Function helps Excel identify if a character is a letter or not
Function IsLetter(strValue As String) As Boolean
Dim intPos As Integer
For intPos = 1 To Len(strValue)
Select Case Asc(Mid(strValue, intPos, 1))
Case 65 To 90, 97 To 122
IsLetter = True
Case Else
IsLetter = False
Exit For
End Select
Next
End Function
'The following function helps Excel identify if a character is a special character, like #, @, and !
Function IsSpecial(strValue As String) As Boolean
Dim intPos As Integer
For intPos = 1 To Len(strValue)
Select Case Asc(Mid(strValue, intPos, 1))
Case 33 To 47, 58 To 64, 91 To 96, 123 To 126
IsSpecial = True
Case Else
IsSpecial = False
Exit For
End Select
Next
End Function
'This is the Macro that will change the colors of characters in your selected range
Public Sub ColorText()
'the next 3 lines set abbreviations as certain kinds of things. Long is a number or integer, Ranges are cell selections
Dim lng As Long
Dim rng As Range
Dim cl As Range
'The next line sets the range of cells to change colors in to whatever cells you have selected on the sheet
Set rng = Selection
'This section loops through each cell in your selection and checks each character in the cell.
For Each cl In rng.Cells
For lng = 1 To Len(cl.Value)
With cl.Characters(lng, 1)
'First the code checks for letters and keeps them black
If IsLetter(.Text) Then
.Font.ColorIndex = 1 'change this number to change the color
'Next it checks for Special Characters and colors them Blue
ElseIf IsSpecial(.Text) Then
.Font.ColorIndex = 41
'If a character is not a letter or a special, it must be a number, so it colors numbers red
Else
.Font.ColorIndex = 3
End If
End With
Next lng 'this moves the code to the next character
Next cl 'once all the characters are checked, this moves the code to the next cell
End Sub 'once all the selected cells have been run through, this ends the code
Su módulo debería verse así ahora .
Ahora estás listo para comenzar a cambiar los colores. Primero, seleccione todas las celdas en las que desea cambiar los colores.
A continuación, abra la pestaña Desarrollador (1) y haga clic en el botón Macros (2):
Debería ver su macro ColorText. Selecciónelo y haga clic en Ejecutar
¡Y su texto debe estar coloreado según el tipo de carácter!
Esto cambiará el color de los caracteres en las celdas seleccionadas. Por lo tanto, puede seleccionar una columna completa o celdas individuales.
Si alguna vez quiere meterse con el código, simplemente presione Alt + F11 para abrir el editor vba. Deberá hacer doble clic en el Módulo 1 para abrirlo.
Para cambiar los colores en el VBA, consulte esta tabla para las opciones de color y los números correspondientes.
Espero que esto ayude. Incluso podría asignar esta macro a un botón o método abreviado de teclado personalizado .