Macro para colocar negrita un texto específico dentro de una celda

A toda la comunidad de todoexpertos.

Agradezco al que me pueda facilitar una macro que examine el contenido de un rango de celdas, y coloque en negrita todo aquello que esté entre paréntesis, incluyendo el paréntesis.
Por ejemplo, que recorra cada celda dentro del rango A1:A10 y cuando encuentre una palabra o número encerrado entre paréntesis, por ejemplo (10), (abc), etc.. La macro lo coloque en negrita, solo lo que esté entre paréntesis, el resto del texto que esté en la celda quedará igual. Que haga ésto con todas las celdas del rango.

La macro se ejecutaría con un botón de comando.

Agradezco su ayuda, esto es algo que hago manualmente desde hace tiempo y es muy agotador.

2 respuestas

Respuesta
1

Esta es la macro solo tienes que poner un botón de comando en la hoja y añadirle esta macro.

Sub encontrar_y_poner_en_negritas()
Set datos = Range("a1").CurrentRegion
With datos
    For i = 1 To .Rows.Count
        celda = .Cells(i, 1)
        posicion = WorksheetFunction.Find("(", celda)
        posicion2 = WorksheetFunction.Find(")", celda) + 1
        longitud = posicion2 - posicion
        .Cells(i, 1).Characters(posicion, longitud).Font.Bold = True
    Next i
End With
End Sub

¡Gracias por responder! 

Cambié a1 por f1, porque los datos están en la columna F, fue el único cambio que hice, pero la ejecución se detiene aquí:

posicion = WorksheetFunction.Find("(", celda)

No se como adjuntar un archivo, sino te lo enviaría.

Esta raro hice ese mismo cambio y aquí si funciona

Así es, lo acabo de hacer y me da el mismo error.

Guarde en archivo en Google Drive, mira a ver si lo puedes descargar

Prueba Macro

Ya vi el problema primero tu tabla tiene filas en blanco y más de un par de parentisis en cada celda, esta macro no es la que necesitas para hacer lo que pides, te muestro el resultado de la macro que esta debajo de imagen

esta es la macro que ocupas

Sub encontrar_y_poner_en_negritas()
Dim apertura As New Collection
Dim cierre As New Collection
Set datos = ActiveSheet.UsedRange
With datos
    col = Range("f1").Column
    For i = 4 To .Rows.Count - 3
    Set apertura = Nothing: Set cierre = Nothing
        celda = .Cells(i, col):        largo = Len(celda)
        For j = 1 To largo
            letra = Right(Left(celda, j), 1)
            If letra = "(" Then apertura.Add j
            If letra = ")" Then cierre.Add j
        Next j
        For k = 1 To apertura.Count
            ap = apertura(k): c = cierre(k) + 1: longitud = c - ap
            .Cells(i, col).Characters(ap, longitud).Font.Bold = True
        Next k
    Next i
End With
End Sub

Wow! Excelente amigo, ahora si quedó perfecta la macro.

Te agradezco mucho la atención y dedicación, no se que tanto nivel de dificultad tuvo para ti pero como yo no se programar, pues para mi era difícil lograrlo, además que busque por mucho tiempo una solución en internet, y nada me daba una solución exacta.

Gracias de nuevo y espero ésto le sirva a alguien más. Saludos y Éxitos!

Pues no tuvo mucho chiste programarlo una vez que vi tu información

Respuesta
1

Te anexo la macro

Sub Texto_Negrita()
'Por.Dante Amor
    For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
        ini = InStr(1, Cells(i, "A"), "(")
        If ini > 0 Then
            fin = InStr(1, Cells(i, "A"), ")")
            Cells(i, "A").Characters(Start:=ini, Length:=fin - ini + 1).Font.FontStyle = "Negrita"
        End If
    Next
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

¡Gracias por responder amigo! 

La macro me sirvió en parte, cuando la ejecuto, solo se coloca en negrita la primera palabra de la celda que se encuentra entre paréntesis. Por ejemplo, si en la celda está:

"(1) Hola (2) Hola (3)"...

Solo me coloca en negrita (1), el (2) y el (3) no lo coloca en negrita, y así hace con el resto de las celdas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas