Imprimir página | Cerrar ventana

Primera fila, error en tiempo de ejecución

Impreso de: Foro de Access y VBA
Categoría: Otros de Microsoft: Windows y Office
Nombre del foro: Excel
Descripción del foro: Foro de Excel y VBA de Excel
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=77504
Fecha de impresión: 22/Noviembre/2019 a las 06:40


Tema: Primera fila, error en tiempo de ejecución
Publicado por: Checolin
Asunto: Primera fila, error en tiempo de ejecución
Fecha de publicación: 06/Septiembre/2013 a las 19:12

Hola a todos, el día de hoy quiero preguntarles como resolver el siguiente problema que se me presenta al correr un procedimiento, explicaré mi problema.

En una hoja de Excel, en la columna "G" voy buscando un valor en cada celda hacía abajo y en caso de encontrarlo hago una comparación entre valor que se encuentra en la misma fila pero en la columna "C" contra el valor de la celda que está en la fila superior misma columna "C", es decir, si encuentro el valor en la celda G5 comparo el valor de las celdas C5=C4, hecho esto realizo otras acciones. Algo que se me olvidaba mencionar es que los valores de las celdas los almaceno en variables.
 
Pues bien, el problema es que como inicio desde la celda G1 al momento de asignar los valores a las variables cuando ejecuta la línea con la instrucción de que almacene el valor que se encuentra en la celda "C?" se produce un error "1004" en tiempo de ejecución, definido por la aplicación o el objeto y esto debe de ser porque no existe una fila antes de la fila 1, por eso es que puse "C?".
 
El código que estoy utilizando es el siguiente.
 
Public Sub ElimReversalRetiro2()
 
Dim dlbCasilla1 As Double, _
dlbCasilla2 As Double, _
dlbCasilla3 As Double, _
dlbCasilla4 As Double, _
dlbCasilla5 As Double, _
dlbCasilla6 As Double
 
Do Until ActiveCell.Offset(0, -1).Value = ""
 
dlbCasilla1 = ActiveCell.Offset(0, -4).Value
dlbCasilla2 = ActiveCell.Offset(-1, -4).Value
dlbCasilla3 = ActiveCell.Offset(0, 1).Value
dlbCasilla4 = ActiveCell.Offset(-1, 1).Value
dlbCasilla5 = ActiveCell.Offset(1, -4).Value
dlbCasilla6 = ActiveCell.Offset(1, 1).Value
If Borrareverso(ActiveCell.Value) Then
If dlbCasilla1 = dlbCasilla2 And _
dlbCasilla3 = dlbCasilla4 Then
Range(Selection, ActiveCell.Offset(-1, 0)).Select
Selection.EntireRow.Delete
ActiveCell.Offset(-1, 0).Activate
ElseIf dlbCasilla1 = dlbCasilla5 And _
dlbCasilla3 = dlbCasilla6 Then
Range(Selection, ActiveCell.Offset(1, 0)).Select
Selection.EntireRow.Delete
ActiveCell.Offset(-1, 0).Activate
ElseIf dlbCasilla1 <> dlbCasilla2 And _
dlbCasilla3 = dlbCasilla4 Then
ActiveCell.Offset(-1, -4).FormulaR1C1 = (dlbCasilla2 - dlbCasilla1)
Selection.EntireRow.Delete
ActiveCell.Offset(-1, 0).Activate
ElseIf dlbCasilla1 <> dlbCasilla5 And _
dlbCasilla3 = dlbCasilla6 Then
ActiveCell.Offset(1, -4).FormulaR1C1 = (dlbCasilla5 - dlbCasilla1)
Selection.EntireRow.Delete
ActiveCell.Offset(-1, 0).Activate
End If
End If
dlbCasilla1 = 0
dlbCasilla2 = 0
dlbCasilla3 = 0
dlbCasilla4 = 0
dlbCasilla5 = 0
dlbCasilla6 = 0
ActiveCell.Offset(1, 0).Activate
Loop
Range("A1").Select
End Sub
 
Nota: Borrareverso es una función que me ayudó a realizar SDGM, gracias nuevamente.
 
La línea que puse en color rojo es donde se da el error pues como comenté, este valor está fuera de la hoja de Excel.
 
Pido de su ayuda para ver si me indican como puedo controlar esto ya que no sé como hacerlo, las pruebas que estuve haciendo durante el desarrollo fueron en filas intermedias por lo que no tuve el problema.
 
Agradeciendo de antemano su ayuda reciban un saludo.
 


-------------
Cuando Dios nos mande inspiración es mejor que nos encuentre trabajando.



Respuestas:
Publicado por: sdgm
Fecha de publicación: 06/Septiembre/2013 a las 21:27
Hola, Sergio.
 
¿Y si empiezas el proceso a partir de la fila 2?  Te sugeriría agregar una línea antes de iniciar el ciclo.  Algo como:
 
Range("G2").select
Do Until ActiveCell.Offset(0, -1).Value = ""
 
 


-------------
Cordialmente, David


Publicado por: Checolin
Fecha de publicación: 06/Septiembre/2013 a las 23:49
David, buenas tardes, gracias por tu respuesta, concisa y con seso Wink, no necesitaba más.
 
Agradeciendote nuevmente tu ayuda me despido.
 
Les pido de favor si cierran el hilo.
 
Saludos


-------------
Cuando Dios nos mande inspiración es mejor que nos encuentre trabajando.



Imprimir página | Cerrar ventana