Excel - Error 450. Argumentos no válidos

 
Vista:

Error 450. Argumentos no válidos

Publicado por Adri (11 intervenciones) el 18/10/2013 00:56:02
Hola qué tal, podrían ayudarme a verificar la razón por la cual no me deja agregar una linea nueva en una hoija de excel. El oibjetivo es que va comparando celda a con celda a+1, si son iguales, se debe agregar una línea en blanco. Primeramente me decia que existen datos que no se pueden perder, ya coloque según yo bien los argumentos, de insert pero nada...

Este es el código, comienza en fila F2 y hacia abajo.
Cells(2, 6).Select
a = 2
Do Until IsEmpty(ActiveCell)
If ActiveCell.Value <> Cells(a + 1, 6).Value Then
ActiveCell.EntireRow.Insert , shift:=xlDown, CopyOrigin:=FromDownToAbove
Else
ActiveCell.Offset(1, 0).Select
End If

Loop
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JuanC

Error 450. Argumentos no válidos

Publicado por JuanC (1237 intervenciones) el 18/10/2013 02:09:42
probá eliminando la coma ',' que aparece entre Insert y shift

Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error 450. Argumentos no válidos

Publicado por jcs (494 intervenciones) el 18/10/2013 09:25:43
Muy buenas.

Lo que te ha comentado JuanC es cierto. Lo que pasa es que además tienes varios errores en el código que van a hacer que no te funcione.
- Dices que quieres que te inserte la línea cuando sean iguales las celdas, y con lo que has puesto lo hace cuando son distintas.
- La celda con la que compara siempre va a ser la (3,6), ya que "a2 siempre vale 2 la no cambiarla dentro del bucle.
- Cuando se cumple la igualdad (desigualdad en tu caso), no cambia de línea, por lo que se crearía un bucle infinito, que no pararía de insertar líneas.

Con todo esto te propongo este nuevo código, que no sé si es exactamente lo que quieres, pero supongo que se aproximará:

Cells(2, 6).Select
Do Until IsEmpty(ActiveCell)
If ActiveCell.Value = ActiveCell.Offset(1, 0).Value Then
ActiveCell.EntireRow.Insert shift:=xlDown, CopyOrigin:=FromDownToAbove
ActiveCell.Offset(2, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Loop

Un saludo. Juanjo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error 450. Argumentos no válidos

Publicado por Adri (11 intervenciones) el 18/10/2013 16:48:27
Muchas gracias por sus amables comentarios y ayuda, sin embargo con el código facilitado por Juanjo, que sí es lo que busco, me envía el siguiente error.Espero contar con su grata respuesta.Buen dia!!!


"Error 1004

Para evitar posible pérdida de datos, Excel no puede desplazar fuera de la hoja de cálculo celdas que no están en blanco.Seleccioen otra ubicación para insertar nuevas celdas o elimine datos al finald e la hoja de cálculo.

Si no hay datos en las celdas que se puedan desplazar fuera de la hoja de cálculo..."

Por cierto coloque un On Error Resume Next también lo intenté después del if y antes de la orden de inserción pero tampoco. Excel no envía error, pero no realiza lo indicado, imagino que debo colocarlo en otra posición.



Cells(2, 6).Select
Do Until IsEmpty(ActiveCell)
On Error Resume Next
If ActiveCell.Value = ActiveCell.Offset(1, 0).Value Then

ActiveCell.EntireRow.Insert shift:=xlDown, CopyOrigin:=FromDownToAbove

ActiveCell.Offset(2, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error 450. Argumentos no válidos

Publicado por Adri (11 intervenciones) el 18/10/2013 18:40:47
Ya quedó gracias. El objetivo era insertar una fila debajo del elemento en caso de que el siguiente elemento sea distinto.


El código es:

Cells(2, 6).Select

Do Until IsEmpty(ActiveCell)
If ActiveCell.Value <> ActiveCell.Offset(1, 0).Value Then
ActiveCell.Offset(1, 0).Select
ActiveCell.EntireRow.Insert shift:=xlDown
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar