Visual Basic para Aplicaciones - porque cuando dejo abierto un archivo de excel unos minutos me sale error en alguna macro

Life is soft - evento anual de software empresarial
 
Vista:
Imágen de perfil de JUAN CAMILO
Val: 53
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

porque cuando dejo abierto un archivo de excel unos minutos me sale error en alguna macro

Publicado por JUAN CAMILO (29 intervenciones) el 13/09/2019 22:40:10
Hola lo que pasa es que tengo una macro en una lista desplegable y a veces dejo el cursor sobre esa celda y digamos me voy para google una media hora y cuando vuelvo sale un error en la macro dice finalizar y depurar error 1004 y la macro deja de funcionar me salgo y vuelvo abrir el archivo y me funciona normal..
porque pasa eso y como lo solucion..

Un saludo y gracias a las personas que pueden comentar me ayudarian mucho <3
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Hector Madriz
Val: 131
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

porque cuando dejo abierto un archivo de excel unos minutos me sale error en alguna macro

Publicado por Hector Madriz (29 intervenciones) el 14/09/2019 04:29:58
Buen dia, anexa el libro o parte de el para evaluar el comportamiento del mismo.

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de JUAN CAMILO
Val: 53
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

porque cuando dejo abierto un archivo de excel unos minutos me sale error en alguna macro

Publicado por JUAN CAMILO (29 intervenciones) el 16/09/2019 17:01:18
Hola Hector mira lo que pasa es que tengo una macro que me pone en blanca una celda y la celda es una lista desplegable dependiente de otra entonces cuando cambio una lista se pone blanca la otra-- F8 Y L8 son 2 celdas con lista deplegables y cuando elijo una opcion en F8 ya la L8 depende de lo que se elijio en F8 y si cambio F8 por otra opcion se pone blanca L8..

Ya te explique lo que pasaba con el archivo de repente sale el error de finalizar o depurar y me di cuenta que tambien me pasa cuando hago una formula en otra celda enseguida se daña la macro que te estoy diciendo que pone la celda blanca y no funciona..

Entonces mira la hoja se llama ( F2) y las fila y columna son F8 Y L8 .. la macro es la ultima ya tu sabras..
Un saludo y Muchas Gracias por la ayuda.. <3
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

porque cuando dejo abierto un archivo de excel unos minutos me sale error en alguna macro

Publicado por Antoni Masana (498 intervenciones) el 17/09/2019 08:07:25
Seria todo un detalle que cuando saliese un error indicar la línea en la que se produce y no esperar a que la adivinemos.

Por otro lado poner comentarios para saber que está haciendo la macro es todo un detallazo porque adivinar es una de las faceta que no dominamos.
Aunque sean 4 líneas de código poner una explicación ayuda muchísimo.

Bien, pues utilizando mis dotes de brujo de la tribu he descubierto done esta el error:

Este es el código de tu libro:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub Worksheet_Change(ByVal Target As Range)
   Dim rngSuma As Range
   '
   Set rngSuma = Range("R23:S35")
   '
   If Union(Target, rngSuma).Address = rngSuma.Address Then
        Call ALERTARANGO
    End If
 
    Application.EnableEvents = False
 
    If Target.Column = 6 And Target.Validation.Type = 3 Then  ' <=== El error esta en esta línea 
        Target.Offset(0, 1).Value = ""
    End If
 
    Application.EnableEvents = True
End Sub

Y cómo no se que carajo pretendes hacer y para que utilizas la condición Target.Validation.Type = 3 no se como arreglarlo.


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de JUAN CAMILO
Val: 53
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

porque cuando dejo abierto un archivo de excel unos minutos me sale error en alguna macro

Publicado por JUAN CAMILO (29 intervenciones) el 17/09/2019 15:16:41
Hola Antoni muchas gracias por la ayuda, se me olvido decirte que cuando oprimo en depurar se resalta en amarillo esa linea Target.Validation.Type = 3, yo la copie de un foro que lo que hace la macro es poner en blanco uns celda, osea tengo dos celdas que son listas dependientes entonces cuando se cambia la primera celda se pone en blnaco la de al lado copie el codigo y me sirvio pero a veces sale ese mensajito de finalizar y depurar,
Si me pudieras hacer el favor de cambiar el codigo pero que hiciera lo mismo no habria problema..<3
Un saludo Brujo jaja
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

porque cuando dejo abierto un archivo de excel unos minutos me sale error en alguna macro

Publicado por Antoni Masana (498 intervenciones) el 17/09/2019 20:22:33
No se que función tiene la condición Target.Validation.Type = 3 ni para que sirve este parámetro ni porque da error.

Se me ocurren un par de soluciones pero no son la más correctas.

Digamos que la solución es del tipo

1
2
On Error Resume Next: C = A / B
On Error Goto 0

Pero lo mas correcto es:
1
If B <> 0 Then C = A /B Else C=0

Solución - 1

1
2
3
4
5
6
7
8
9
10
11
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngSuma As Range
    '
    Set rngSuma = Range("R23:S35")
    '
    If Union(Target, rngSuma).Address = rngSuma.Address Then Call ALERTARANGO
 
    Application.EnableEvents = False: On Error Resume Next
    If Target.Column = 6 And Target.Validation.Type = 3 Then Target.Offset(0, 1).Value = ""
    Application.EnableEvents = True: On Error Goto 0
End Sub

Solución - 2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngSuma As Range, Tipo As Boolean
    '
    Set rngSuma = Range("R23:S35")
    '
    If Union(Target, rngSuma).Address = rngSuma.Address Then Call ALERTARANGO
 
    On Error Resume Next: Tipo = False: Tipo = (Target.Validation.Type = 3)
    On Error Goto 0
 
    Application.EnableEvents = False
    If Target.Column = 6 And Tipo = True Then  Target.Offset(0, 1).Value = ""
    Application.EnableEvents = True
End Sub


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de JUAN CAMILO
Val: 53
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

porque cuando dejo abierto un archivo de excel unos minutos me sale error en alguna macro

Publicado por JUAN CAMILO (29 intervenciones) el 17/09/2019 21:31:05
Hola Antoni Muchas Gracias te lo agradezco mucho crack ..<3
Me funciono bien esperemos que siga asi..
Un saludo Antoni..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar