Jump to content
edu_hoyos

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

Recommended Posts

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

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.

Edited by Antoni

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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!

Share this post


Link to post
Share on other sites

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.

 

 

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

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?

 

 

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

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

Edited by Antoni

Share this post


Link to post
Share on other sites
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

Edited by Antoni

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
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. 

Share this post


Link to post
Share on other sites
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...

 

Share this post


Link to post
Share on other sites
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. 🥰🥰🥰

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

INFORMACIÓN BÁSICA SOBRE PROTECCIÓN DE DATOS

Responsable: Sergio Andrés Celemín

Finalidad: Moderar y responder comentarios de usuarios. Recuerda que la información que facilites es pública, y los datos que incluyas los leerá cualquier visitante de esta web, así como el avatar que poseas.

Legitimación: Consentimiento del interesado.

Destinatarios: Hetzner Online GmbH.

Derechos: Puedes ejercitar en cualquier momento tus derechos de acceso,
rectificación, supresión, oposición y demás derechos legalmente establecidos a
través del email sergio@ayudaexcel.com.

Información adicional: Encontrarás más información en la política de privacidad.




  • Posts

    • ¿Y pretendes que nos inventemos las hojas, los rangos, los datos,  los textbox y el resto del código VBA? Si quieres tener la posibilidad de ayuda, empieza cumpliendo las normas del foro y sube un archivo con todo lo necesario para resolver tu consulta.
    • Saludos Abrahan estos son los errores al abrir el archivo,me dices si te va de algo o aun asi necesitas el codigo xml que uso para cargar la ribbon aunque como te comente me funciona muy bien en las maquinas donde no hice ninguna desinstalacion,lo que indica que el codigo xml no es el problema en si,por eso creo que se esta dndo una incompatibilidad por haber tenido antes office 2010,que opinas mi amigo
    • buenas tardes antes que nada agradecer por el tiempo que se toman en apoyarnos con nuestras dudas bueno mi consulta es la siguiente tengo una tabla y quisiera que al momento de escribir los datos en la celdas de arriba (algo como un buscador me filtre la información que estoy buscando) les dejo un ejemplo para que se pueda entender mejor espero puedan ayudarme muchas gracias. ejemplo.xlsx
    • ¡Hola a ambos! @joselica:  Quizá lo que te muestro en el adjunto te pone en perspectiva para lo que estás pidiendo.  En lo que adjunto, debes tener en cuenta que los cambios debes hacerlos en el rango manual (a la derecha), para que éste se vea reflejado en la parte izquierda. De igual forma, ten en cuenta la columna "orden", la cual determina el orden en ese día con respecto a los turnos.  ¡Comentas! ¡Bendiciones! Turnos.xlsx
    • Hola, les explico la problemática que tengo con una pequeña macro, esta Macro la ocupo para buscar y remplazar, me funciona muy bien con una condicionante, pero estoy intentando colocar 2 condicionantes y ahí es donde estoy atorado. Set h1 = Sheets("BD SALIDAS") Set b = h1.Range("A:A").Find(REMISION) If Not b Is Nothing Then End If Set d = h1.Range("C:C").Find(LOTE) If Not d Is Nothing Then h1.Cells(d.Row, "F") = (SALIDASLT) End If lo que busco es que la Macro encuentre el LOTE y que coincida con la REMISIÓN para poder sustituir el dato del TEXTBOX a la celda. agradezco mucho su ayuda.
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy