Macro para crear hoja y borrar filas específicas

09/10/2006 - 22:56 por Isrrael | Informe spam
Buenas tardes a todos!
Tengo el siguiente codigo producto de una grabación de la herramienta Macro
de Excel:

Sub Creating_New_Sheet()
Sheets("Fecha ODA Oct (5)").Copy After:=Sheets(13)
Rows("2:2").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
Range("A2").Select
End Sub

Lo que hace es que copia la hoja activa hacia la derecha y borra todas las
filas desde 2:2 hasta el fin. Pero esta macro no funciona para cualquier
libro. Que debo de hacer para que funcione con todo libro, es decir, crear
una hoja nueva exactamente igual, a la activa, pero borrando todos los datos
desde 2:2. Le quise reemplazar con ActiveSheet. pero algo me falta...

Y la otra ayuda, qué codigo puede "ser selectivo", es decir, que "detecte"
en la columna D una palabra en específico, y entonces borre toda la fila con
esa palabra.

Gracias anticipadas,
Isrrael

Preguntas similare

Leer las respuestas

#1 David
09/10/2006 - 23:10 | Informe spam
Para tu primera consulta:

Cambia la primera línea de tu código. En su lugar, crea una variable string
para luego asignarle el nombre de la hoja activa. Luego insertas la nueva
hoja a la derecha de la misma:

Sub Creating_New_Sheet()

Dim Hoja As String
Hoja = ActiveSheet.Name
Sheets(Hoja).Copy After:=Sheets(Hoja)

Rows("2:2").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
Range("A2").Select
End Sub




"Isrrael" escribió:

Buenas tardes a todos!
Tengo el siguiente codigo producto de una grabación de la herramienta Macro
de Excel:

Sub Creating_New_Sheet()
Sheets("Fecha ODA Oct (5)").Copy After:=Sheets(13)
Rows("2:2").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
Range("A2").Select
End Sub

Lo que hace es que copia la hoja activa hacia la derecha y borra todas las
filas desde 2:2 hasta el fin. Pero esta macro no funciona para cualquier
libro. Que debo de hacer para que funcione con todo libro, es decir, crear
una hoja nueva exactamente igual, a la activa, pero borrando todos los datos
desde 2:2. Le quise reemplazar con ActiveSheet. pero algo me falta...

Y la otra ayuda, qué codigo puede "ser selectivo", es decir, que "detecte"
en la columna D una palabra en específico, y entonces borre toda la fila con
esa palabra.

Gracias anticipadas,
Isrrael



Respuesta Responder a este mensaje
#2 Isrrael
09/10/2006 - 23:25 | Informe spam
guau!,
funciona perfecto!. Mil gracias David,
la otra parte aun no la matizo en el cerebro.., pero tengo que resolverla...
Mil gracias de nuevo por tu ayuda!
Isrrael
"David" wrote in message
news:
Para tu primera consulta:

Cambia la primera línea de tu código. En su lugar, crea una variable
string
para luego asignarle el nombre de la hoja activa. Luego insertas la nueva
hoja a la derecha de la misma:

Sub Creating_New_Sheet()

Dim Hoja As String
Hoja = ActiveSheet.Name
Sheets(Hoja).Copy After:=Sheets(Hoja)

Rows("2:2").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
Range("A2").Select
End Sub




"Isrrael" escribió:

Buenas tardes a todos!
Tengo el siguiente codigo producto de una grabación de la herramienta
Macro
de Excel:

Sub Creating_New_Sheet()
Sheets("Fecha ODA Oct (5)").Copy After:=Sheets(13)
Rows("2:2").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
Range("A2").Select
End Sub

Lo que hace es que copia la hoja activa hacia la derecha y borra todas
las
filas desde 2:2 hasta el fin. Pero esta macro no funciona para cualquier
libro. Que debo de hacer para que funcione con todo libro, es decir,
crear
una hoja nueva exactamente igual, a la activa, pero borrando todos los
datos
desde 2:2. Le quise reemplazar con ActiveSheet. pero algo me falta...

Y la otra ayuda, qué codigo puede "ser selectivo", es decir, que
"detecte"
en la columna D una palabra en específico, y entonces borre toda la fila
con
esa palabra.

Gracias anticipadas,
Isrrael



Respuesta Responder a este mensaje
#3 KL
10/10/2006 - 00:03 | Informe spam
Hola chicos,

creo que se puede depurar el codigo ligeramente:

Sub Creating_New_Sheet()
Sheets(ActiveSheet.Name).Copy After:=ActiveSheet
With ActiveSheet
.Range(.[A2], .[A2].End(xlDown)).EntireRow.Delete Shift:=xlUp
End With
End Sub


Saludos,
KL


"Isrrael" wrote in message news:%23LTEql%
guau!,
funciona perfecto!. Mil gracias David,
la otra parte aun no la matizo en el cerebro.., pero tengo que resolverla...
Mil gracias de nuevo por tu ayuda!
Isrrael
"David" wrote in message news:
Para tu primera consulta:

Cambia la primera línea de tu código. En su lugar, crea una variable string
para luego asignarle el nombre de la hoja activa. Luego insertas la nueva
hoja a la derecha de la misma:

Sub Creating_New_Sheet()

Dim Hoja As String
Hoja = ActiveSheet.Name
Sheets(Hoja).Copy After:=Sheets(Hoja)

Rows("2:2").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
Range("A2").Select
End Sub




"Isrrael" escribió:

Buenas tardes a todos!
Tengo el siguiente codigo producto de una grabación de la herramienta Macro
de Excel:

Sub Creating_New_Sheet()
Sheets("Fecha ODA Oct (5)").Copy After:=Sheets(13)
Rows("2:2").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
Range("A2").Select
End Sub

Lo que hace es que copia la hoja activa hacia la derecha y borra todas las
filas desde 2:2 hasta el fin. Pero esta macro no funciona para cualquier
libro. Que debo de hacer para que funcione con todo libro, es decir, crear
una hoja nueva exactamente igual, a la activa, pero borrando todos los datos
desde 2:2. Le quise reemplazar con ActiveSheet. pero algo me falta...

Y la otra ayuda, qué codigo puede "ser selectivo", es decir, que "detecte"
en la columna D una palabra en específico, y entonces borre toda la fila con
esa palabra.

Gracias anticipadas,
Isrrael









Respuesta Responder a este mensaje
#4 David
10/10/2006 - 00:38 | Informe spam
Ok. Ahora vamos con la segunda consulta. Prueba el siguiente código:

Sub BorrarFilas()
Dim Fila As Integer, Seguir As Boolean
'Principiaremos a analizar la hoja desde la fila 2:
Fila = 2
Seguir = True
Do
'Se verifica si la celda está vacía. Esto indica que se ha terminado.
If Len(Cells(Fila, 4)) = 0 Then
Seguir = False
Else
'Si la celda no está vacía, se busca la palabra BORRAR
If Cells(Fila, 4) = "BORRAR" Then
'Se borra la fila y se corren los datos hacia arriba
Range(Cells(Fila, 1), Cells(Fila, 4)).Delete shift:=xlShiftUp
'Como la fila fué eliminada, no se incrementa el contador de
filas
Else
'Como la fila no fue eliminada, se incrementa el contador de
filas
Fila = Fila + 1
End If
End If
Loop While Seguir
End Sub

Comentas cómo te fue...

Saludos.



"Isrrael" escribió:

guau!,
funciona perfecto!. Mil gracias David,
la otra parte aun no la matizo en el cerebro.., pero tengo que resolverla...
Mil gracias de nuevo por tu ayuda!
Isrrael
"David" wrote in message
news:
> Para tu primera consulta:
>
> Cambia la primera línea de tu código. En su lugar, crea una variable
> string
> para luego asignarle el nombre de la hoja activa. Luego insertas la nueva
> hoja a la derecha de la misma:
>
> Sub Creating_New_Sheet()
>
> Dim Hoja As String
> Hoja = ActiveSheet.Name
> Sheets(Hoja).Copy After:=Sheets(Hoja)
>
> Rows("2:2").Select
> Range(Selection, Selection.End(xlDown)).Select
> Range(Selection, Selection.End(xlDown)).Select
> Selection.Delete Shift:=xlUp
> Range("A2").Select
> End Sub
>
>
>
>
> "Isrrael" escribió:
>
>> Buenas tardes a todos!
>> Tengo el siguiente codigo producto de una grabación de la herramienta
>> Macro
>> de Excel:
>>
>> Sub Creating_New_Sheet()
>> Sheets("Fecha ODA Oct (5)").Copy After:=Sheets(13)
>> Rows("2:2").Select
>> Range(Selection, Selection.End(xlDown)).Select
>> Range(Selection, Selection.End(xlDown)).Select
>> Selection.Delete Shift:=xlUp
>> Range("A2").Select
>> End Sub
>>
>> Lo que hace es que copia la hoja activa hacia la derecha y borra todas
>> las
>> filas desde 2:2 hasta el fin. Pero esta macro no funciona para cualquier
>> libro. Que debo de hacer para que funcione con todo libro, es decir,
>> crear
>> una hoja nueva exactamente igual, a la activa, pero borrando todos los
>> datos
>> desde 2:2. Le quise reemplazar con ActiveSheet. pero algo me falta...
>>
>> Y la otra ayuda, qué codigo puede "ser selectivo", es decir, que
>> "detecte"
>> en la columna D una palabra en específico, y entonces borre toda la fila
>> con
>> esa palabra.
>>
>> Gracias anticipadas,
>> Isrrael
>>
>>
>>



Respuesta Responder a este mensaje
#5 KL
10/10/2006 - 01:00 | Informe spam
Hola David,

1) Tu codigo pierde tiempo valioso [entre otras cosas] evaluando si la celda esta vacia y recorriendo todas las celdas en vez de ir
directamente a la siguiente ocurrencia de "BORRAR" mediante el metodo .Find

2) Ademas, si tu hipotesis es que solo puede haber 2 posibles valores en la columna [D:D] - vacio y "BORRAR", entonces (suponiendo
que no pueden existir mas de ~8100 celdas vacias no contiguas en dicha columna) no hay ninguna necesidad de usar bucles, bastaria
con lo siguiente:

On Error Resume Next
[D2:D65536].SpecialCells(xlCellTypeConstants).EntireRow.Delete

Lo cual es veces mas rapido.

Saludos,
KL


"David" wrote in message news:
Ok. Ahora vamos con la segunda consulta. Prueba el siguiente código:

Sub BorrarFilas()
Dim Fila As Integer, Seguir As Boolean
'Principiaremos a analizar la hoja desde la fila 2:
Fila = 2
Seguir = True
Do
'Se verifica si la celda está vacía. Esto indica que se ha terminado.
If Len(Cells(Fila, 4)) = 0 Then
Seguir = False
Else
'Si la celda no está vacía, se busca la palabra BORRAR
If Cells(Fila, 4) = "BORRAR" Then
'Se borra la fila y se corren los datos hacia arriba
Range(Cells(Fila, 1), Cells(Fila, 4)).Delete shift:=xlShiftUp
'Como la fila fué eliminada, no se incrementa el contador de
filas
Else
'Como la fila no fue eliminada, se incrementa el contador de
filas
Fila = Fila + 1
End If
End If
Loop While Seguir
End Sub

Comentas cómo te fue...

Saludos.



"Isrrael" escribió:

guau!,
funciona perfecto!. Mil gracias David,
la otra parte aun no la matizo en el cerebro.., pero tengo que resolverla...
Mil gracias de nuevo por tu ayuda!
Isrrael
"David" wrote in message
news:
> Para tu primera consulta:
>
> Cambia la primera línea de tu código. En su lugar, crea una variable
> string
> para luego asignarle el nombre de la hoja activa. Luego insertas la nueva
> hoja a la derecha de la misma:
>
> Sub Creating_New_Sheet()
>
> Dim Hoja As String
> Hoja = ActiveSheet.Name
> Sheets(Hoja).Copy After:=Sheets(Hoja)
>
> Rows("2:2").Select
> Range(Selection, Selection.End(xlDown)).Select
> Range(Selection, Selection.End(xlDown)).Select
> Selection.Delete Shift:=xlUp
> Range("A2").Select
> End Sub
>
>
>
>
> "Isrrael" escribió:
>
>> Buenas tardes a todos!
>> Tengo el siguiente codigo producto de una grabación de la herramienta
>> Macro
>> de Excel:
>>
>> Sub Creating_New_Sheet()
>> Sheets("Fecha ODA Oct (5)").Copy After:=Sheets(13)
>> Rows("2:2").Select
>> Range(Selection, Selection.End(xlDown)).Select
>> Range(Selection, Selection.End(xlDown)).Select
>> Selection.Delete Shift:=xlUp
>> Range("A2").Select
>> End Sub
>>
>> Lo que hace es que copia la hoja activa hacia la derecha y borra todas
>> las
>> filas desde 2:2 hasta el fin. Pero esta macro no funciona para cualquier
>> libro. Que debo de hacer para que funcione con todo libro, es decir,
>> crear
>> una hoja nueva exactamente igual, a la activa, pero borrando todos los
>> datos
>> desde 2:2. Le quise reemplazar con ActiveSheet. pero algo me falta...
>>
>> Y la otra ayuda, qué codigo puede "ser selectivo", es decir, que
>> "detecte"
>> en la columna D una palabra en específico, y entonces borre toda la fila
>> con
>> esa palabra.
>>
>> Gracias anticipadas,
>> Isrrael
>>
>>
>>



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