Eliminar columnas

07/12/2006 - 18:58 por Alejandro Garcia | Informe spam
Tengo el siguiente macro que alguien me lo dio en algun momento que
estaba necesitando:

Sub concatena()
Dim celda As Range
For Each celda In Selection
celda = celda.Offset(0, 1) & " " & celda.Offset(0, 2) & " " &
celda.Offset(0, 3)
Next celda
End Sub

Me gustaría, si es posible eliminar las columnas que concatene, es
decir, aplico la rutina en la columna A y me concatena las columnas B,
C y D. Luego, deseo eliminar estas ultimas columnas.

Gracias.

Preguntas similare

Leer las respuestas

#6 Ivan
08/12/2006 - 01:15 | Informe spam
*****************************
Fe de ERRATAS BIS -> n=0 en cualquier caso
*****************************

y olvida lo que dije de pasar las columnas. Me imagino que se trata de
una macro a la que llamas una vez seleccionado un rango en la hoja

lo que si ten en cuenta es que al eliminar las columnas las eliminas
totalmente. o sea que si tienes datos por debajo o por encima de la
seleccion tambien se los carga

bueno, lo dicho, andate con ojo, pues no he trabajado apenas con rangos
seleccionados y no estoy seguro del todo

un saludo
ivan
Respuesta Responder a este mensaje
#7 Alejandro Garcia
09/12/2006 - 14:49 | Informe spam
Ivan, gracias por los consejos, los pondre en practica para ver que
pasa. Son muy amables.
Respuesta Responder a este mensaje
#8 Alejandro Garcia
09/12/2006 - 14:57 | Informe spam
Ivan, excelente, me funciono de maravillas este codigo, gracias por tu
colaboración. Solo cambien, como me indicas entirerow por entirecolumn
y listo.

Gracias.

prueba a ver esto

Sub concatena()
Dim celda As Range, n as long
n=1 'si no tienes fila de encabezamiento seria n=0
For Each celda In Selection
n=n+1
with celda
.value =.Offset(0, 1) & " " & .Offset(0, 2) & " " &.Offset(0,
3)
if n= selection.rows.count then
.offset(0,3).entirerow.delete
.offset(0,2).entirerow.delete
.offset(0,1).entirerow.delete
end if
end with
Next celda
End Sub
Respuesta Responder a este mensaje
#9 Ivan
09/12/2006 - 15:20 | Informe spam
hola Alejandro,

aunque supongo que ya lo has hecho, por si acaso te lo recuerdo:->

debes cambiar en el codigo la inicializacion de 'n':->

donde pone:-> > > n=1 'si no tienes fila de encabezamiento seria
n=0 ->

deja solo -> n=0

si no lo haces la ultima fila no te la concatenara.

me alegro que te haya sido util

un saludo
Ivan
Respuesta Responder a este mensaje
#10 Ivan
09/12/2006 - 18:19 | Informe spam
hola de nuevo Alejandro

aunque a lo mejor soy un pesado, aqui van otras dos formas, quizas mas
sencillas, por si quieres echar un ojo.

Sub concatena2()
Dim Celda As Range, n As Long
n = 0
For Each Celda In Selection
n = n + 1
With Celda
.Value = .Offset(0, 1) & " " & .Offset(0, 2) & " " & .Offset(0,
3)
If n = Selection.Rows.Count Then
Range(.Offset(0, 1), .Offset(0, 3)).EntireColumn.Delete
End If
End With
Next Celda
End Sub


Sub concatena3()
Dim Celda As Range, n As Long
n = 0
For Each Celda In Selection
n = n + 1
With Celda
.Value = .Offset(0, 1) & " " & .Offset(0, 2) & _
" " & .Offset(0, 3)
If n = Selection.Rows.Count Then
Range(.Cells(1, 2).Address, .Cells(1, 4).Address) _
.EntireColumn.Delete
End If
End With
Next Celda
End Sub

ojo a los saltos de linea

un saludo
Ivan
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida