no salta el error

29/04/2005 - 15:58 por fredy | Informe spam
hola grupo!

tengo el siguiente codigo

Sub COMPILA_ADICIONA()
For I = 1 To 80
CODIGO = Cells(I + 45, 1)
For J = 6 To 42
On Error GoTo 100
VALOR = Application.WorksheetFunction.Match(CODIGO, Rows(J), 0)
ACUM = ACUM + VALOR
100
J = J + 3
Next J
Cells(I + 45, 2) = ACUM
Next I
End Sub

lo que pasa es que la linea "On Error GoTo 100" funciona la primera vez es
decir cuando j=6 y valor da como resultado vacio va a la linea 100 pero
cuando j toma el valor de 10 ( es decir el siguiente j despues de j=6) el
codigo se detiene diciendo que es imposible obtener la propiedad match, lo
que no estiendo es porque con la linea "On Error GoTo 100" no se salta ese
error.

muchas gracias
un saludo
 

Leer las respuestas

#1 Héctor Miguel
30/04/2005 - 10:25 | Informe spam
hola, fredy !

... el siguiente codigo
Sub COMPILA_ADICIONA()
For I = 1 To 80
CODIGO = Cells(I + 45, 1)
For J = 6 To 42
On Error GoTo 100
VALOR = Application.WorksheetFunction.Match(CODIGO, Rows(J), 0)
ACUM = ACUM + VALOR
100
J = J + 3
Next J
Cells(I + 45, 2) = ACUM
Next I
End Sub
... la linea "On Error GoTo 100" funciona la primera vez... pero cuando j toma el valor de 10
... el codigo se detiene diciendo que es imposible obtener la propiedad match
... no estiendo... porque con la linea "On Error GoTo 100" no se salta ese error.



[notas 'varias']... :))
1.- NO siempre es 'recomendable' [tratar de] 'forzar' una instruccion de 'omision' de errores
[sobre todo cuando -como en este caso- estas 'mezclando' errores de vba CON -posibles- errores en excel]
2.- si 'sospechas' que pudiera presentarse algun error [y lo puedes 'detectar']... evitalo/prevenlo/corrigelo/...
[en la estructura que estas usando -realmente- NO estas haciendo un 'manejo' de errores -vba/excel-] :-(
3.- si a tu primer 'bucle' [siempre] le estas agregando 45 lineas... porque no lo estableces 'tal cual es' -?-
4.- caso similar en el segundo 'bucle'... en lugar de aumentar 3 'a la fila que seguia'... hazle un 'Step' de 4 ;)

prueba con el siguiente codigo y [si cualquier duda]... comentas?
saludos,
hector.
en un modulo de codigo 'normal' ==Sub Verifica_Acumula()
For I = 46 To 125
CODIGO = Cells(I, 1)
ACUM = 0
For J = 6 To 42 Step 4
VALOR = Application.Match(CODIGO, Rows(J), 0)
If Not IsError(VALOR) Then ACUM = ACUM + VALOR
Next
Cells(I, 2) = ACUM
Next
End Sub

nota: no estoy seguro de si 'realmente' quieres acumular 'el acumulado anterior' -?-
de ser asi... elimina la linea con el... ACUM = 0 ->para el 'arranque' de cada fila 'I'<-

Preguntas similares