Problemas con macros

Elsa Matilde, tengo dos problemas que ojalá tu me ayudes a resolver
El primero es que tengo un archivo de excel con macros que pesa algo así como 30 MB y cada vez que lo guardo me saca un mensaje que dice algo así : "El documento se ha guardado correctamente pero debe ser cerrado por una infracción de uso compartido", luego le doy salir y me saca un mensaje de Visual Basic "Error del sistema &H8000FFFF (-2147418113). Error catastrófico"
El segundo problema con otro archivo es que necesito una macro que al momento de seleccionar un valor de una lista desplegable, ejecute otra macro; ya lo intenté con Worksheet_SelectionChange y dentro de ella "If Target.Address = "CeldaObjetivo" Then Call MacroNecesitada Else: End If" pero no me funciona, que solución me puedes dar?

1 respuesta

Respuesta
1
Con respecto a la primera parte, ¿sabes por qué tiene ese tamaño, es decir, la cantidad de información justifica el tamaño? Porque a veces copiamos botones o celdas con formatos especiales (color, tramas, etc) y eso nos dispara el tamaño. Lo que debes hacer en ese caso es crear un nuevo libro donde copies los datos y formatees cada hoja por separado.
En la segunda consulta, si hablamos de una lista validada, en la celda, debes utilizar el evento Change no Selection_Change. (Este tema encontrarás bien explicado en mi nuevo Manual ). El resto de las instrucciones están correctas.
Es que con la instrucción:
Application.EnableEvents = False
Estás inhabilitando el evento siguiente, que es justamente la macro que querés ejecutar.
Quitándola se solucionará el problema.
Hola Elsa, el archivo tiene 24 hojas y 20 módulos con algunas macros realmente extensas, pero hay otros archivos con cantidad similar de información que no pesan tanto, y si tengo la manía de copiar muchos formatos y botones, así que puede esa ser la causa, con respecto al segundo punto, no me funcionó, no se porque, he aquí la instrucción completa:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$c$5" Then
Application.ScreenUpdating = False
Application.EnableEvents = False
Call MoverEmpresas
End If
Application.EnableEvents = True
End Sub
De verdad te agradezco cualquier ayuda, un millón de gracias
Beohrtnoth
Hola Elsa, de verdad que pena molestarte tanto, hice lo que me dijiste y no funciona, lo peor es que tengo un botón al lado con la macro "MoverEmpresas" y cada vez que cambio el valor de la lista desplegable y le doy click al botón la macro funciona perfectamente; pero cuando cambio el valor de la celda con la lista desplegable, no ejecuta la macro! Me va a sacar de quicio este Visual, porque precisamente lo que busco es evitar que el usuario tenga que pulsar un botón; nuevamente disculpa los inconvenientes y espero puedas colaborarme
Mil gracias
Enviame el archivo siempre y cuando no sea el de 30Mb !
O si preferís tengo el de muestra con tu ejemplo.
Mi dirección en la página al pie.
El archivo mide 19 MB, je je, mira, lo peor es que tengo en el mismo archivo otra macro que si sirve, y es así:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$2" Then
Application.ScreenUpdating = True
Application.EnableEvents = False
Dim Ranges As Range
Call Filtrar_SubSector_Y_Año
Sheets("Filtro").Select
la macro que no sirve (ubicada en una hoja diferente) es :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$c$5" Then
Application.ScreenUpdating = False
Call MoverEmpresas
End If
End Sub
La macro "MoverEmpresas" que funciona con un botón pero no cuando se le llama con la instrucción anterior, es la que sigue:
Sub MoverEmpresas()
I = Range("c5").Value
Application.ScreenUpdating = False
Range("a6").Select
Application.ScreenUpdating = True
While ActiveCell.Row <> 499 And ActiveCell.Value <> I
If ActiveCell.Value = Range("c5").Value Then
ActiveCell.Select
Else: End If
ActiveCell. Offset(1, 0).Activate
Wend
End Sub
No se si te sea de utilidad, mil gracias
No lo puedo creer, muchísimas gracias por tu ayuda, ahora si funciona, eres muy muy amable
Un saludo
En realidad no me hizo falta... porque reparé en que tu referencia está escrita en minúsculas y debe ser en mayúsculas:
If Target.Address = "$C$5" Then
(Para el caso de Range no es necesario)
Creo que ahora está resuelto, pero recordá lo que te mencioné acerca del copiado de botones o controles con formatos: llevan información 'oculta' que te dispara el tamaño del libro. Imposible que pese tanto...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas