Problema con una macro para generar menús configurables.

02/03/2006 - 08:21 por Luis Cases \(defkon\) | Informe spam
He usado una macro de j-walk, concretamente esta:
http://www.j-walk.com/ss/excel/tips/tip53.htm para crear un menú adaptado a
mi trabajo.

Funciona perfectamente y me permite que las funciones/macros que antes tenía
en botones/campos de lección en otra pestaña, ahora estén al alcance en la
misma pestaña de datos.

Pero... ese menú (que aparece cuando abro el worksheet y se desaparece
cuando lo cierro) también está en todas los libros que se abren en la
sesión, y si alguien ejecuta desde otro libro algún comando de ese menú, da
error porque aplica las macros en el libro que estés.

Supongo que lo debería hacer es que todas las macros que hay grabadas hagan
referencia solo a la libro original en el que fueron grabadas, ¿Como puedo
hacer eso?

Muchas gracias.

Preguntas similare

Leer las respuestas

#6 Héctor Miguel
02/03/2006 - 19:25 | Informe spam
hola, Luis !

Ooops... Cuando se cierra el libro se produce un error.
... el menu tiene una sub para eliminarlo, llamada Sub DeleteMenu(), que se ejecuta al salir de la hoja mediante:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call DeleteMenu
End Sub
Entonces al ejecutar:
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
Application.CommandBars(1).Controls("Configuración").Enabled = False
End Sub
Pero no existe ya ese control, por lo que se produce el error.
Eliminando Sub DeleteMenu(), se soluciona, aunque el menu "Configuración" permanece (inactivo) mientras siga abierta la Excel



[efectivamente] el evento '_beforeclose' se activa ANTES que el evento '_windowdeactivate'
por lo cual, el control 'ya no existe' [cuando se esta cerrando el libro] y siempre estaria sucediendo 'de esta manera' :-(
para solucionarlo... agrega una instruccion On Error Resume Next -> en el evento '_windowdeactivate' [p.e.]
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
On Error Resume Next
Application.CommandBars(1).Controls("Configuración").Enabled = False
End Sub

saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida