¿Como crear macro para concatenar?

Quisiera hacer una macro a partir de la siguiente formula:

=CONCATENATE(LEFT(B2, 3),"-", MID(B2, 4,11),"-", RIGHT(B2, 3))

En este ejemplo la celda que contiene el texto es la B2, y la celda activa donde se generara el texto concatenado seria B1, pero necesito que funcione para la celda activa independientemente la ubicación de esta. El valores que se va a concatenar siempre estará a la derecha de la celda activa.

Mi objetivo es generar la macro, para poder agregarla al excel y cada que abra un archivo de excel nuevo de excel tener un botón con esta macro en la barra de acceso rápido.

2 Respuestas

Respuesta
1

[Hola

Hay varias pero varias formas. Yo soy contrario a usar ActiveCell, pero tú tendrás tus razones. Suponiendo que cuando activas la macro la celda activa siempre está a la derecha de la celda con datos, pues esto te servirá:

Sub Concatenando()
ActiveCell = Left(ActiveCell.Offset(, -1), 3) & "-" & Mid(ActiveCell.Offset(, -1), 4, 11) & "-" & Right(ActiveCell.Offset(, -1), 3)
End Sub
Respuesta
1

El valores que se va a concatenar siempre estará a la derecha de la celda activa.

Prueba la siguiente:

Sub prueba1()
  With ActiveCell.Offset(0, 1)
    ActiveCell = Left(.Value, 3) & "-" & Mid(.Value, 4, 11) & "-" & Right(.Value, 3)
  End With
End Sub

Muchas gracias si me funciono, ahora bien ¿Cómo seria el código si requiero se aplique para un rango de celdas seleccionados, y no estar aplicándolo de celda por celda.

Buen día.

Prueba lo siguiente:

Sub prueba1()
  Dim c As Range
  For Each c In Selection
    With c.Offset(0, 1)
      c = Left(.Value, 3) & "-" & Mid(.Value, 4, 11) & "-" & Right(.Value, 3)
    End With
  Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas