Cómo colorear solo números y caracteres especiales en una celda de Microsoft Excel

0

¿Es posible colorear solo números y caracteres especiales de una celda (o columna) mediante formato condicional o algún otro método similar?

He creado un libro en Excel para organizar mis contraseñas (o para poner mis contraseñas en orden antes de exportarlas a un administrador de contraseñas). Luego, en la columna "contraseñas", me gustaría que Excel coloree los números y los caracteres especiales para distinguirlos del resto del texto.

Ejemplo: Enpass 6

Vi esto en la aplicación Enpass 6 (beta) y me gustó el efecto, y no sé si puede implementar algo similar en Excel.

Ejemplo: Microsoft Excel 2016

Muchas gracias por cualquier recomendación o idea.

Ps 1: capturas de pantalla del anexo de Enpass y el efecto que me gustaría ver en Excel, por ejemplo, los números tienen un color y los caracteres especiales otro color.

Ps 2: Observo que no soy un programador tan experto, así que si me recomiendan un código de Visual Basic, por favor con sus comentarios para tratar de entenderlo.

Ps 3: muchas gracias por tu ayuda, nuevamente.

gabeweb
fuente
vba es la única forma de hacer esto.
Scott Craner

Respuestas:

0

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í:

ingrese la descripción de la imagen 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.

ingrese la descripción de la imagen aquí

A continuación, abra la pestaña Desarrollador (1) y haga clic en el botón Macros (2):

ingrese la descripción de la imagen aquí

Debería ver su macro ColorText. Selecciónelo y haga clic en Ejecutar

ingrese la descripción de la imagen aquí

¡Y su texto debe estar coloreado según el tipo de carácter!

ingrese la descripción de la imagen aquí

Esto cambiará el color de los caracteres en las celdas seleccionadas. Por lo tanto, puede seleccionar una columna completa o celdas individuales.

ingrese la descripción de la imagen aquí

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 .

jrichall
fuente
Hola @jrichall Muchas gracias por su respuesta detallada y didáctica. En realidad, este código funciona muy bien, pero ahora tengo otras dudas: veo que el código funciona cuando los valores se escriben directamente en la celda pero no cuando provienen del resultado de una fórmula (por ejemplo, la celda en cuestión es el concatenación del contenido de otras celdas y las que forman la contraseña CONCATENATE (B2; B3; B4). ¿Qué valor se debe cambiar en el código en ese caso? Porque lo probé y arroja el error 1004, apuntando a la líneaIf IsLetter (.Text) Then
gabeweb