Macro Concatenar con Letra Cursiva

Hola a todos por internet he conseguido la siguiente macro:

Private Sub Worksheet_Change(ByVal Target As Range)
With ActiveSheet
If Not Application.Intersect(Target, .[A1:B1]) Is Nothing Then
.[C1].Value = .[A1].Value & " " & .[B1]
.[C1].Characters(Len(.[A1]) + 2).Font.FontStyle = "cursiva"
End If
End With
End Sub

Mi pregunta solamente es saber si se puede hacer para un rango mayor por ejemplo 30 filas más y

El tema es que cuando concatena en la columna c no me pega el resultado de las 30 filas solo pega en c1 :(

Mil gracias!

2 Respuestas

Respuesta
1

En donde dice

f Not Application.Intersect(Target, .[A1:B1]) Is Nothing Then
.[C1].Value = .[A1].Value & " " & .[B1]

Cambias el B1 por B30 ya que A1:B1 es el rango y si lo quieres mas grande es A1:B30

Quedando asi

f Not Application.Intersect(Target, .[A1:B30]) Is Nothing Then
.[C1].Value = .[A1].Value & " " & .[B30]

Los rangos indican

"desde : hasta" = A1:B1 o los renglones y columnas que tu desees

Probé tu solución, en primer lugar gracias por tu rapidez, pero el tema es que cuando concatena en la columna c no me pega el resultado de las 30 filas solo pega en c1 :(

Prueba este código

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For i = 1 To 30
Sheets("hoja1").Cells(i, "C") = Sheets("hoja1").Cells(i, "A") & " " & Sheets("hoja1").Cells(i, "B")
Sheets("hoja1").Cells(i, "C").Font.Italic = True
Next i
End Sub

Respuesta
2

Si tu idea es que vaya concatenando en col C con cambios por cada fila utilizá estas instrucciones:

Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
With ActiveSheet
If Not Application.Intersect(Target, .Range("A1:B30")) Is Nothing Then
.Range("C" & Target.Row).Value = .Range("A" & Target.Row).Value & " " & .Range("B" & Target.Row)
.Range("C" & Target.Row).Characters(Len(.Range("A" & Target.Row)) + 2).Font.FontStyle = "cursiva"
End If
End With
End SubPrivate Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
With ActiveSheet
If Not Application.Intersect(Target, .Range("A1:B30")) Is Nothing Then
.Range("C" & Target.Row).Value = .Range("A" & Target.Row).Value & " " & .Range("B" & Target.Row)
.Range("C" & Target.Row).Characters(Len(.Range("A" & Target.Row)) + 2).Font.FontStyle = "cursiva"
End If
End With
End Sub

Target. Row es la fila de la celda que cambia.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas