Macro Concatenar manteniendo formato o aplicando formato desde la macro

Hola A todos, como se observa en la imagen, requiero de una macro que en la columna c, concatene lo que haya en las columnas A y B, pero necesito que lo que esta en la columna B lo concatene en letra Cursiva, la Columna B es formulada, por lo tanto al cambiar la formula se actualice el Resultado de la macro en la columna C, el rango de la macro seria limitado por ejemplo datos correspondientes a 30 filas. Gracias e intentado buscar por muchas paginas y no lo he conseguido, a tal punto que no se si esto se pueda lograr.

2 Respuestas

Respuesta
1

Esta macro te puede ayudar:

Sub proceso()
'por luismondelo
Range("b1").Select
Do While ActiveCell.Value <> ""
ActiveCell.Offset(0, 1).Value = ActiveCell.Offset(0, -1) & " " & ActiveCell
ActiveCell.Offset(0, 1).Characters(InStr(ActiveCell.Offset(0, 1), "("), 15).Font.Italic = True
ActiveCell.Offset(1, 0).Select
Loop
End Sub

Luis gracias por tu interés, la pregunta es, los datos de la columna b son formulados, y toca volver a ejecutar la macro cada vez que cambie el valor de la Columna b, sabés vos de alguna forma que la macro se actualice automático al cambiar la fórmula.

Gracias

Por el mero hecho de cambiar una fórmula no... puedes hacerlo ejecutando la macro cada cierto tiempo, ... cuando el usuario modifique alguna celda... cuando toque alguna celda...

Luis gracias me quedo claro, era solo capricho, creo que puedo crear un botón y asignarle la macro ylisto, ¿solo una ultima cosa vos sabes en que parte de tu macro debo cambiar para que solo tenga en cuenta un rango definido? Ejemplo b3:b25 actualmente se detiene si encuentra una celda en blanco

Ok, la macro quedaría asÍ:

Sub proceso()
'por luismondelo
Range("b1").Select
Do While ActiveCell.row <=25
ActiveCell.Offset(0, 1).Value = ActiveCell.Offset(0, -1) & " " & ActiveCell
ActiveCell.Offset(0, 1).Characters(InStr(ActiveCell.Offset(0, 1), "("), 15).Font.Italic = True
ActiveCell.Offset(1, 0).Select
Loop
End Sub

Mil gracias más que oportuna y excelente tu trabajo, gracias por tu ayuda !

La pregunta sigue pendiente... ¿sabes si la tienes que cerrar?

OMG, luis voy a chequear como se cierra, luis si la celda de la columna de b esta en blanco, la macro de todas formas convierte parte del texto en Italic, eso tiene arreglo, que si esta blanco lo deje tal cual?

Prueba con la macro así:

Sub proceso()
'por luismondelo
Range("b1").Select
Do While ActiveCell.row <=25
if activecell.value <>"" then
ActiveCell.Offset(0, 1).Value = ActiveCell.Offset(0, -1) & " " & ActiveCell
ActiveCell.Offset(0, 1).Characters(InStr(ActiveCell.Offset(0, 1), "("), 15).Font.Italic = True
end if
ActiveCell.Offset(1, 0).Select
Loop
End Sub

Más que suficiente exacto ! Mil gracias

La última consulta sigue abierta

Respuesta
1

Utiliza la siguiente macro, cada vez que modifiques la columna D, se actualizará la columna C y te pondrá las letras que quieres en cursiva. La macro la tienes que poner en worksheet:

1. Entra a VBA

2. En el panel del lado izquierdo busca tu hoja y dale doble click

3. En el panel del lado derecho pon la siguiente macro

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.DAM
If Not Intersect(Target, Range("D:D")) Is Nothing Then
    Cells(Target.Row, "C") = Cells(Target.Row, "A") & Cells(Target.Row, "B")
    a = Len(Cells(Target.Row, "A"))
    b = Len(Cells(Target.Row, "B"))
     With Cells(Target.Row, "C").Characters(Start:=a + 1, Length:=b).Font
        .FontStyle = "Cursiva"
    End With
End If
End Sub

Saludos.Dante Amor

No olvides valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas