insertar fila en blanco

24/03/2006 - 18:20 por klomkbock | Informe spam
Hola a todos

Supongo que no debe ser dificil, pero llevo tropecientos intentos y no
consigo dar con ello. Quiero insertar una fila en blanco si se cumplen
unas condiciones. El ultimo intento ha sido asi:

With Celda2 In .Range(.[f6], .[f65536].End(xlUp))
If .Value <> .Offset(-1, 0) And .ofsset(-1, 0) <> "" _
And IsNumeric(.Offset(-1, -5)) Then
Rows(.EntireRow).Insert shift:=xlUp

Para que no de problemas al principio del codigo he puesto:

For Each Celda2 In .Range(.[f7], .[f65536].End(xlUp))
If .[f65536].End(xlUp).Row = 5 Then
Exit For
ElseIf Celda2 = "" Then
Rows(Celda2.EntireRow).Delete
End If
Next Celda2

En cualquier caso no consigo dominar/comprender el uso de insert.

Si podeis ayudarme os lo agradezco.

Un saludo y hasta pronto
Ivan
 

Leer las respuestas

#1 Héctor Miguel
25/03/2006 - 06:15 | Informe spam
hola, Ivan !

... insertar una fila en blanco si se cumplen unas condiciones. El ultimo intento ha sido asi:
With Celda2 In .Range(.[f6], .[f65536].End(xlUp))
If .Value <> .Offset(-1, 0) And .ofsset(-1, 0) <> "" _
And IsNumeric(.Offset(-1, -5)) Then
Rows(.EntireRow).Insert shift:=xlUp
Para que no de problemas al principio del codigo he puesto:
For Each Celda2 In .Range(.[f7], .[f65536].End(xlUp))
If .[f65536].End(xlUp).Row = 5 Then
Exit For
ElseIf Celda2 = "" Then
Rows(Celda2.EntireRow).Delete
End If
Next Celda2
En cualquier caso no consigo dominar/comprender el uso de insert.



1) no puedes 'combinar' estructuras de diferente tipo [p.e.]
o utilizas With...End With
o utilizas For <Contador> = <Minimo> To <Maximo> ... Next
o utilizas For Each <Variable> In <Alcance> ... Next

2) el uso del 'With' es util para evitar una 'repeticion' del objeto al que se necesita hacer referencia [p.e.]

a) SIN el 'With' es necesario 'repetir' la variable 'Celda2' -> DENTRO del bucle 'For...Next'
For Each Celda2 In .Range(.[f6], .[f65536].End(xlUp))
If Celda2 <> Celda2.Offset(-1) And Celda2.Ofsset(-1) <> "" _
And IsNumeric(Celda2.Offset(-1, -5)) Then
' aqui las instrucciones... '
End If
Next

b) CON el 'With' puedes evitar la repeticion de la variable 'Celda2' -> DENTRO del bloque 'With' ;)
For Each Celda2 In .Range(.[f6], .[f65536].End(xlUp))
With Celda2
If .Value <> .Offset(-1) And .Ofsset(-1) <> "" And IsNumeric(.Offset(-1, -5)) Then
' aqui las instrucciones... '
End If
End With
Next

has pruebas y... si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

Preguntas similares