Saltar al contenido

se ha producido el error '-2147417848 (80010108) en tiempo de ejecucion : Error de Automatizacion


edu_hoyos

Recommended Posts

publicado

Hola.

Resumo un poco el archivo :

Es una tabla donde en la Columna A se encuentra el codigo de barras. Si el codigo de barras que introduzco esta en dicha columna salta un segundo formulario para introducir el valor.

El Enter_click se encuentra en un formulario donde permite poner un texto ( un codigo de barras ) y al hacer click ejecuta el codigo a continuacion.

Cada X productos salta el error : "se ha producido el error '-2147417848 (80010108) en tiempo de ejecucion : Error de Automatizacion". Si pulsamos en depurar la fila que marca es la del Set.

Si paro el programa y vuelvo a intentarlo salta un error diferente aunque lo marca en el mismo sitio : "Se ha producido el error "1004" en tiempo de ejecucion : Error definido por la aplicacion o el objeto.

 

Lo curioso es que salta el error cada X veces ( no siempre el mismo numero de veces ) y si guardo el excel. Lo cierro y volvemos a abrirlo y seguimos nos permite continuar por el mismo codigo de barras otras tantas veces.

Private Sub Enter_Click()

Dim CodBarras As String
Dim Novedad As String
Dim Revision As Long
Dim celda As Object


Application.ScreenUpdating = False
Application.DisplayAlerts = False
    
CodBarras = txt_codigo_barras

If CodBarras = "" Then
MsgBox "No puedes introducir nada.", , "Error"
Exit Sub
End If

Set celda = Sheets("Contar").Range("A:A").Cells.Find(What:=CodBarras, LookAt:=xlWhole)

If celda Is Nothing Then
MsgBox "Codigo de Barras no encontrado"
Exit Sub

ElseIf celda = CodBarras Then
celda.Select
Unload Me
Formulario_Stock.Show
End If

Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub
publicado

Hola,

Hice un pequeño cambio en el código si te sigue dando error es por otra parte donde te están los tiros... Aparentemente no debe haber error. Aunque no hay nada como ver la Lógica con ambos formularios y los controles...

Private Sub Enter_Click()
Dim CodBarras As String
Dim Novedad As String
Dim Revision As Long
Dim celda As Range

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
        
    CodBarras = txt_codigo_barras
    
    If CodBarras = "" Then
        MsgBox "No puedes introducir nada.", , "Error"
        Exit Sub
    End If
    
    Set celda = Sheets("Contar").Range("A:A").Cells.Find(What:=CodBarras, LookAt:=xlWhole)
    
    If Not celda Is Nothing Then
        celda.Select
        Unload Me
        Formulario_Stock.Show
    Else
        MsgBox "Codigo de Barras no encontrado"
        Exit Sub
    End If
    
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True

End Sub

 

 

Saludos.

publicado
Hace 13 horas, Leopoldo Blancas dijo:

Hola,

Hice un pequeño cambio en el código si te sigue dando error es por otra parte donde te están los tiros... Aparentemente no debe haber error. Aunque no hay nada como ver la Lógica con ambos formularios y los controles...


Private Sub Enter_Click()
Dim CodBarras As String
Dim Novedad As String
Dim Revision As Long
Dim celda As Range

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
        
    CodBarras = txt_codigo_barras
    
    If CodBarras = "" Then
        MsgBox "No puedes introducir nada.", , "Error"
        Exit Sub
    End If
    
    Set celda = Sheets("Contar").Range("A:A").Cells.Find(What:=CodBarras, LookAt:=xlWhole)
    
    If Not celda Is Nothing Then
        celda.Select
        Unload Me
        Formulario_Stock.Show
    Else
        MsgBox "Codigo de Barras no encontrado"
        Exit Sub
    End If
    
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True

End Sub

 

 

Saludos.

Gracias Leopoldo. No ha funcionado, ahora en unos minutos cuelgo el archivo.

publicado
Hace 13 horas, Antoni dijo:

Mejor sube el archivo porqué no está nada claro lo que expones.

Ok. He aislado la parte del programa donde da el error y verificado que sigue dandolo.

 

Ejecutando el formulario " formulario_contar" te pide un codigo de barras. Adjunto un txt con los codigos de barras y el stock que dara Correcto. Se puede introducir tambien mal la cantidad pero sera mas largo.

En la prueba de esta mañana me ha fallado cuando llevaba contados 34 pero tengo la sensacion que es aleatorio. ( adjunto pantallazo tambien del error ). Si le das a depurar y vuelves a darle al play para que te muestre el error, te muestra uno diferente

"Se ha producido el error "1004" en tiempo de ejecucion : Error definido por la aplicacion o el objeto. "

Error.JPG

Contar2.xlsm productos.txt

publicado

Me da la impresión que se llena alguna pila de eventos de tanto Unload Me y .Show.

Prueba añadiendo la sentencia DoEvents después de cada Unload Me, a ver si se soluciona.

Lo suyo sería hacerlo todo en un único formulario a base de motrar/ocultar frames.

Mañana si tengo un hueco te subo un ejemplo de lo que quiero decir, mientras, prueba lo que te he comentado.

publicado

Hola, creo que la falla es por el abuso de Unload Me y .Show como dice Antoni, entonces te recomiendo que en vez de cerrar y volver a abrir los formularios, solo escóndelos con MiFormulario.Hide y lo vuelves a mostrar con .Show.

Ya cuando no los utilices entonces usa Unload Me.

Saludos.

publicado
Hace 35 minutos , Antoni dijo:

Me da la impresión que se llena alguna pila de eventos de tanto Unload Me y .Show.

Prueba añadiendo la sentencia DoEvents después de cada Unload Me, a ver si se soluciona.

Lo suyo sería hacerlo todo en un único formulario a base de motrar/ocultar frames.

Mañana si tengo un hueco te subo un ejemplo de lo que quiero decir, mientras, prueba lo que te he comentado.

He probado con DoEvents y sigue fallando. Si me mandas algo perfecto, de todos modos buscare tambien sobre mostrar/ocultar frames. Gracias Antoni.

publicado
Hace 11 minutos , Leopoldo Blancas dijo:

Hola, creo que la falla es por el abuso de Unload Me y .Show como dice Antoni, entonces te recomiendo que en vez de cerrar y volver a abrir los formularios, solo escóndelos con MiFormulario.Hide y lo vuelves a mostrar con .Show.

Ya cuando no los utilices entonces usa Unload Me.

Saludos.

Me pongo a revisar donde necesito cada y pruebo. Gracias Leopoldo!

publicado

Hola, 

Ya me di cuenta que tienes un "Revoltijo" de "formulario_contar.Show" y UnLoad.Me....

1.- Lamas a formulario_contar.Show...

2.- Cierras a formulario_contar y abres Stock

3.- En Activate de Stock otra vez contar.show

4.- Después en el botón otra vez contar.Show.....como 3 veces???

 

Mira la lógica para programar es que no abras y/o cierres y/o llames a los formularios como si fueran Variables, Los Formularios solo se Abren una vez y si quieres abrir otro formulario y que no se vea el de atrás con HIDE lo ocultas y con SHOW lo muestras...

Solo tienes que llamarlos cuando tengas que presentar el formulario en pantalla...

Saludos.

 

 

publicado
Hace 1 hora, Antoni dijo:

Ya está revisado, salvo error u omisión, el formulario adjunto es la fusión de todos los demás. ?

Contar2.xlsm 64 kB · 0 descargas

Mil Gracias Antoni. De momento ya es bastante mas funcional y rapido. Y llevo toda la mañana desde tu ejemplo revisando como funcionan los marcos y es un gusto. Ya he corregido otro archivo que tenia similar. En cuanto confirme que funciona lo doy por resuelto.

publicado

Funciona perfectamente. Antes de darlo por cerrar una duda de los Frames. ME ha pasado ya dos veces que al moverlos se mete uno dentro de otro y cuando miro en el otro no esta. ( pero el codigo y todo esta ) .

Esto es algun bug de Excel? Soy muy torpe?

 

 

publicado
Hace 8 horas, edu_hoyos dijo:

ME ha pasado ya dos veces que al moverlos se mete uno dentro de otro

Siempre ha pasado eso, son muy "quisquillosos" los Frame, no hay nada como hacer un diseño a Lapiz y ya después lo Dibujas con VBA, para no estar moviendo Frames y controles... se vuelve incontrolables...

Saludos.

publicado

La idea de juntar todos los formularios en uno era buena, la forma de llevarla cabo, no, mis disculpas por ello.

La utilización de frames por si sola es engorrosa, la solución correcta es sustituirlos o combinarlos con un control multipage.

Prueba todo el circuito por si he cometido algún error a la hora de mostrar los distintos "formularios".

Contar2 (2).xlsm

publicado
Cita

La idea de juntar todos los formularios en uno era buena, la forma de llevarla cabo, no, mis disculpas por ello.

La utilización de frames por si sola es engorrosa, la solución correcta es sustituirlos o combinarlos con un control multipage.

Prueba todo el circuito por si he cometido algún error a la hora de mostrar los distintos "formularios".

 

Adjunto de nuevo el archivo con una ligera corrección.

Contar2 (2).xlsm

publicado

Hola edu_hoyos,

Lo que tratas de hacer con varios formularios para mi es engorroso, a lo mejor al principio que programaba lo hacia así pero, con la experiencia que fui adquiriendo con un solo formulario Basta y Sobra, ya que, como lo tienes, de un formulario a otro ya no sabes en donde estas parado... es mejor tener todos los datos involucrados en un solo formulario... todo a la vista...!!!

Saludos.

publicado
Hace 17 horas, Leopoldo Blancas dijo:

Hola edu_hoyos,

Lo que tratas de hacer con varios formularios para mi es engorroso, a lo mejor al principio que programaba lo hacia así pero, con la experiencia que fui adquiriendo con un solo formulario Basta y Sobra, ya que, como lo tienes, de un formulario a otro ya no sabes en donde estas parado... es mejor tener todos los datos involucrados en un solo formulario... todo a la vista...!!!

Saludos.

¿Antes de contestar te molestas en leer las respuestas anteriores? porqué a esa conclusión ya se llegó el 24 de noviembre y ya se han dado varias soluciones en ese sentido. 

publicado
Hace 7 horas, Antoni dijo:

¿Antes de contestar te molestas en leer las respuestas anteriores? porqué a esa conclusión ya se llegó el 24 de noviembre y ya se han dado varias soluciones en ese sentido. 

Ya no me regañes y menos en Público...???

Pues si lo leí en su momento... pero como ya pasaron días ya no me acorde...contesto a lo último que veo... por eso opine así... 

Saludos...

 

publicado
Hace 26 minutos , Leopoldo Blancas dijo:

Ya no me regañes y menos en Público...???

Pues si lo leí en su momento... pero como ya pasaron días ya no me acorde...contesto a lo último que veo... por eso opine así... 

Saludos...

 

!Vamos hombre! no llores más, que sabes que en el fondo te quiero. ???

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.