Errorrrr

09/12/2007 - 12:33 por Ignacio Perez | Informe spam
Hola a todos:
Tengo una Hoja/Formulario de la que recogo datos mediante una macro y se
guardan en una Hoja/Base de datos. El caso es que para modificar registros ya
existentes lo que hago es buscarlos por una columna determinada eliminar
todas la filas que contienen el valor que busco y escribir al final de la
Hoja/Base de datos.
Bienpues la parte de codigo que deberia eliminar la filas no funciona,
¿alguien podria echarme una mano?:

With Hoja6.[C3:C5000]
Set c = .Find(Hoja1.[F23], LookIn:=xlValues)
If Not c Is Nothing Then
Valor = Application.WorksheetFunction.Max(Hoja6.Range("Recorridos"))
+ 1
Respuesta = MsgBox("Este recorrido ya esta en la base de datos, si
lo guardas sobreescribiras el existente. El numero para un recorrido nuevo
seria el " & Valor & Chr(13) & " ¿Quieres sobreescribir el recorrido
existente?", vbOKCancel, "Recorrido existente")
FirstAddress = c.Address
Do
Hoja6.Rows(c.Row).Delete Shift:=xlUp
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> FirstAddress
End If
End With

Un saludo
 

Leer las respuestas

#1 AnSanVal
09/12/2007 - 18:55 | Informe spam
Al eliminar filas en un bucle, debes tener en cuenta que todas las filas
siguientes se desplazan un lugar hacia arriba, por lo que la "fila
siguiente" ocupa el lugar de la eliminada (p.e. la que era 8 pasa a ser 7).
En este caso la fila "siguiente" (la que era siguiente) no es evaluada.

Para evitar eso podrias:

opción a) Trabajar con un bucle inverso (de abajo a arriba).
opción b) Subir una fila con cada eliminación [p.e:
ActiveCell.Offset(-1,0).Select, o restar 1 al número de fila, o ... ]


Saludos desde Tenerife (Islas Canarias).
************************************************
"Ignacio Perez" escribió en el
mensaje news:
Hola a todos:
Tengo una Hoja/Formulario de la que recogo datos mediante una macro y se
guardan en una Hoja/Base de datos. El caso es que para modificar registros
ya
existentes lo que hago es buscarlos por una columna determinada eliminar
todas la filas que contienen el valor que busco y escribir al final de la
Hoja/Base de datos.
Bienpues la parte de codigo que deberia eliminar la filas no funciona,
¿alguien podria echarme una mano?:

With Hoja6.[C3:C5000]
Set c = .Find(Hoja1.[F23], LookIn:=xlValues)
If Not c Is Nothing Then
Valor =
Application.WorksheetFunction.Max(Hoja6.Range("Recorridos"))
+ 1
Respuesta = MsgBox("Este recorrido ya esta en la base de datos, si
lo guardas sobreescribiras el existente. El numero para un recorrido nuevo
seria el " & Valor & Chr(13) & " ¿Quieres sobreescribir el recorrido
existente?", vbOKCancel, "Recorrido existente")
FirstAddress = c.Address
Do
Hoja6.Rows(c.Row).Delete Shift:=xlUp
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> FirstAddress
End If
End With

Un saludo

Preguntas similares