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

#1 J.P.
07/12/2006 - 20:10 | Informe spam
Buena tarde

Despues de la linea Next celda agregue

Columns("B:D").Select
Selection.Delete Shift:=xlToLeft
Range("A1").selec
Alejandro Garcia ha escrito:


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.
Respuesta Responder a este mensaje
#2 Alejandro Garcia
07/12/2006 - 23:05 | Informe spam
Gracias J.P., el problema es las columnas no necesariamente son A, B o
C. Las columnas son variables y asi como me pasas el codigo me sale un
error en la ultima linea, ademas, me borra la concatenacion que tengo,
dejando solo el valor de la ultima columna.

Pero de todas formas muy amable por tu respuesta.

Buena tarde

Despues de la linea Next celda agregue

Columns("B:D").Select
Selection.Delete Shift:=xlToLeft
Range("A1").selec
Alejandro Garcia ha escrito:


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.
Respuesta Responder a este mensaje
#3 Ivan
08/12/2006 - 00:18 | Informe spam
hola Alejandro

no se como le pasas las columnas al procedimiento para que sepa cuales
debe concatenar/eliminar, pero para el ej. que pones pienso que te
valdria con irlas eliminando en orden inverso, es decir

algo parecido a esto ->

celda.offset(0,3).entirecolumn.delete
celda.offset(0,2).entirecolumn.delete
celda.offset(0,1).entirecolumn.delete

que dependiendo cuando quieras eliminar las columnas deberias/podrias
poner en un sitio o en otro (pej al salir del bucle)

en cualquier caso pienso que debe funcionar, pero no lo he probado.
anda con ojo.

espero te sirva

un saludo y hasta pronto
Ivan
Respuesta Responder a este mensaje
#4 Ivan
08/12/2006 - 00:53 | Informe spam
hola de nuevo Alejandro

lo de despues del bucle es una burrada <celda ya no existiria y Offset
no te valdria>

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

creo que te valdria, aunque nunca he utilizado selection, pero por ej
este otro funciona perfectamente

Sub EliminarTrasConcatenar()
Dim Celda As Range, fin As Long, elim As Byte
With Worksheets("Hoja1")
fin = .[b65536].End(xlUp).Row
For Each Celda In .Range("a1:a" & fin)
With Celda
.Value = .Offset(0, 1) & " " & _
.Offset(0, 2) & " " & .Offset(0, 3)
If .Row = fin Then
.Offset(0, 3).EntireColumn.Delete
.Offset(0, 2).EntireColumn.Delete
.Offset(0, 1).EntireColumn.Delete
End If
End With
Next
End With
End Sub

aunque tiene varios detalles fruto de las varias cosas que creo que
(como suele decir alguien por aqui) te has dejado en el tintero

un saludo
Ivan
Respuesta Responder a este mensaje
#5 Ivan
08/12/2006 - 01:00 | Informe spam
****************************

disculpa, Fe de ERRATAS -> cambia los entirerow -> por -> entirecolumn

******************************
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida