INSERTAR FILAS EN BLANCO

23/03/2010 - 17:49 por DANIEL | Informe spam
Hola a todos.
Tengo varios archivos con rangos diferentes que pueden tener desde 50 hasta
500 filas y que inician tambien en filas distintas.

No existen filas en blanco.

Deseo insertar dos filas en blanco cada dos filas y que pueda seleccionar el
rango en el que se insertarán las filas para poder aplicarlo en varios
archivos.

Ojala me pudieran ayudar con un código para hacerlo.

Y aprovechando la ocasión si me pueden recomendar algún libro o manual para
aprender a elaborar códigos de VBA se los agradeceré.

Gracias.

Preguntas similare

Leer las respuestas

#1 Juan Español
23/03/2010 - 19:06 | Informe spam
Hola DANIEL:

Este código en un botón de comando hace lo que tú quieres.

Private Sub CommandButton1_Click()
Dim f_in, f_fi As Integer
f_in = inputbox("INSERTE LA FILA INICIAL", "FILA INICIAL")
If f_in = 0 Or f_in = False Then Exit Sub
f_fi = inputbox("INSERTE LA FILA FINAL", "FILA FINAL")
If f_fi < f_in Or f_fi = False Then Exit Sub
For n = f_in + 2 To f_fi
Rows(n & ":" & n).Insert Shift:=xlDown
Rows(n & ":" & n).EntireRow.Insert
n = n + 3
Next
End Sub

Es lento para mi gusto, así que espero que alguien aporte algo mejor o lo
mejore.

Saludos.-

"DANIEL" escribió en el mensaje de
noticias news:
Hola a todos.
Tengo varios archivos con rangos diferentes que pueden tener desde 50
hasta
500 filas y que inician tambien en filas distintas.

No existen filas en blanco.

Deseo insertar dos filas en blanco cada dos filas y que pueda seleccionar
el
rango en el que se insertarán las filas para poder aplicarlo en varios
archivos.

Ojala me pudieran ayudar con un código para hacerlo.

Y aprovechando la ocasión si me pueden recomendar algún libro o manual
para
aprender a elaborar códigos de VBA se los agradeceré.

Gracias.
Respuesta Responder a este mensaje
#2 Héctor Miguel
23/03/2010 - 22:13 | Informe spam
hola, Daniel !

Tengo varios archivos con rangos diferentes que pueden tener desde 50 hasta 500 filas y que inician tambien en filas distintas.
No existen filas en blanco.
Deseo insertar dos filas en blanco cada dos filas y que pueda seleccionar el rango en el que se insertaran las filas
para poder aplicarlo en varios archivos...



otra alternativa ("en reversa") con 4 inputboxes para seleccionar:
- desde cual fila
- hasta cual fila
- cuantas se insertan
- cada cuantas (no se mueven)

Sub Inserta_xFilas_cada_n()
Dim Fila1 As Integer, FilaX As Integer, xFilas As Byte, nFilas As Byte, _
x As Integer, Rango As String
Fila1 = Val(Trim(InputBox("Indica la primer fila donde se insertan nuevas", "")))
If Fila1 < 1 Then Exit Sub
FilaX = Val(Trim(InputBox("Indica la ultima fila donde se insertan nuevas", "")))
If FilaX < 1 Then Exit Sub
xFilas = Val(Trim(InputBox("Indica el numero de filas a insertar", "")))
If xFilas < 1 Then Exit Sub
nFilas = Val(Trim(InputBox("Indica cada cuantas filas se insertan nuevas", "")))
If nFilas < 1 Then Exit Sub
Application.ScreenUpdating = False
For x = FilaX To Fila1 Step -nFilas
Range("a" & x).Resize(xFilas).EntireRow.Insert
Next
End Sub

saludos,
hector.
Respuesta Responder a este mensaje
#3 Juan Español
23/03/2010 - 22:28 | Informe spam
Cuasi perfecto, pero hay que considerar que el salto en negativo puede
distorsionar el resultado si el número de filas a tratar no es múltiplo
exacto de "cada cuantas filas insertamos".
Conocía la sentencia

Range(..).Resize.(n).EntireRow.Insert

pero no la había usado nunca y me atreví a exponer el código sin probar
antes.

Saludos para ti, Héctor.

"Héctor Miguel" escribió en el mensaje de
noticias news:
hola, Daniel !

Tengo varios archivos con rangos diferentes que pueden tener desde 50
hasta 500 filas y que inician tambien en filas distintas.
No existen filas en blanco.
Deseo insertar dos filas en blanco cada dos filas y que pueda seleccionar
el rango en el que se insertaran las filas
para poder aplicarlo en varios archivos...



otra alternativa ("en reversa") con 4 inputboxes para seleccionar:
- desde cual fila
- hasta cual fila
- cuantas se insertan
- cada cuantas (no se mueven)

Sub Inserta_xFilas_cada_n()
Dim Fila1 As Integer, FilaX As Integer, xFilas As Byte, nFilas As Byte, _
x As Integer, Rango As String
Fila1 = Val(Trim(InputBox("Indica la primer fila donde se insertan
nuevas", "")))
If Fila1 < 1 Then Exit Sub
FilaX = Val(Trim(InputBox("Indica la ultima fila donde se insertan
nuevas", "")))
If FilaX < 1 Then Exit Sub
xFilas = Val(Trim(InputBox("Indica el numero de filas a insertar", "")))
If xFilas < 1 Then Exit Sub
nFilas = Val(Trim(InputBox("Indica cada cuantas filas se insertan
nuevas", "")))
If nFilas < 1 Then Exit Sub
Application.ScreenUpdating = False
For x = FilaX To Fila1 Step -nFilas
Range("a" & x).Resize(xFilas).EntireRow.Insert
Next
End Sub

saludos,
hector.

Respuesta Responder a este mensaje
#4 JANTHER
23/03/2010 - 22:42 | Informe spam
Hola Daniel

No he revisado el codigo de Juan Español, pero de todos modos te envío este,
espero y te sirva:



Sub Insertar_2_Filas()

Dim Pri, Ult As Integer

Pri = InputBox("PRIMERA FILA", "Inicio")
If Pri = 0 Or Pri = False Then Exit Sub

Ult = InputBox("ULTIMA FILA", "Fin")
If Ult < Pri Or Ult = False Then Exit Sub

Aux1 = Ult - Pri
Aux2 = Ult + Aux1


For Fila = Pri To Aux2

'Si es <> "" inserta
Cells(Fila + 1, 1).Offset(0).Select

If Cells(Fila, 1).Value <> "" Then Call Insertar

Fila = Fila + 3

Next Fila


MsgBox "Proceso terminado", vbInformation

End Sub
Sub Insertar()

Selection.Resize(rowsize:=2).Rows(2).EntireRow.Resize(rowsize:=2).Insert
Shift:=xlDown

End Sub


Saludos

J. Antonio Hernández B.
Respuesta Responder a este mensaje
#5 DANIEL
23/03/2010 - 23:31 | Informe spam
"Héctor Miguel" escribió:

hola, Daniel !

> Tengo varios archivos con rangos diferentes que pueden tener desde 50 hasta 500 filas y que inician tambien en filas distintas.
> No existen filas en blanco.
> Deseo insertar dos filas en blanco cada dos filas y que pueda seleccionar el rango en el que se insertaran las filas
> para poder aplicarlo en varios archivos...

otra alternativa ("en reversa") con 4 inputboxes para seleccionar:
- desde cual fila
- hasta cual fila
- cuantas se insertan
- cada cuantas (no se mueven)

Sub Inserta_xFilas_cada_n()
Dim Fila1 As Integer, FilaX As Integer, xFilas As Byte, nFilas As Byte, _
x As Integer, Rango As String
Fila1 = Val(Trim(InputBox("Indica la primer fila donde se insertan nuevas", "")))
If Fila1 < 1 Then Exit Sub
FilaX = Val(Trim(InputBox("Indica la ultima fila donde se insertan nuevas", "")))
If FilaX < 1 Then Exit Sub
xFilas = Val(Trim(InputBox("Indica el numero de filas a insertar", "")))
If xFilas < 1 Then Exit Sub
nFilas = Val(Trim(InputBox("Indica cada cuantas filas se insertan nuevas", "")))
If nFilas < 1 Then Exit Sub
Application.ScreenUpdating = False
For x = FilaX To Fila1 Step -nFilas
Range("a" & x).Resize(xFilas).EntireRow.Insert
Next
End Sub

saludos,
hector.


.
Gracias a Juan Español, JANTHER y Héctor Miguel por responder.



El código de Juan Español me funcionó pero parcialmente, ya que el rango que
elijo para que me inserte filas, se incrementa con las filas insertadas y
solo inserta hasta la última fila del rango inicial, es decir, por ejemplo si
tengo un rango de la fila 1 a la 20 y quiero que me inserte dos filas cada
dos a partir de la fila 3 lo que hace es insertarme dos filas cada dos pero a
lo que inicialmente estaba hasta la fila 10, a partir de la fila 11 a la 20
queda igual, solo se recorre hacia abajo,
Pero muchísimas gracias por haber repondido.

En el código de JANTHER me aparece un erro de sintaxis, no sé que estoy
haciendo mal si lo copie tal cual.

El código de Héctor Miguel me funcionó a la perfección.

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