Hacer referencia a un elemento de submenu

03/11/2006 - 02:59 por Ivan | Informe spam
Hola a todos

tengo una una barra de menus con varios submenus, a cuyos elementos no
se como hacer referencia directa/sencilla una vez creados, o sea, en
procedimientos independientes del de creacion. Hasta ahora lo estoy
haciendo a base de sucesivos bucles ->

Menus->Submenu->Elemento

aunque asi parece funcionar bien, supongo que debe de haber forma de
nombrarlos sin los bucles.
He hecho varias pruebas tipo ->

-> With Commandbars(index).Controls(index): .Controls(index)

o directamente-> Commandbars("Caption")

pero de momento me da error.

este proc. es un ej. de uso que funciona bien: ->

Sub Actualizar_Visibles()
Dim Ind As Long
Dim Menu As CommandBarControl
Dim OpMenu As CommandBarControl
With Hoja1
For Each Menu In Application.CommandBars("Menus_Libreria").Controls
If Menu.Index = 2 Then
For Each OpMenu In Menu.Controls
If OpMenu.Index = 3 Then
For Ind = 1 To 4
Select Case Hoja1.Range("H" & 15 + Ind).Value
Case "Marcado": OpMenu.Controls(Ind).FaceId = 1087
Case "Desmarcado": OpMenu.Controls(Ind).FaceId = 1088
End Select
Next
End If
Next
End If
Next
End With
End Sub

como veis, aunque funcione bien, no deja de ser un poco engorroso tanto
codigo para decir solamente algo asi como->

-> Si la Celda(tal)="Cual" entonces el Elemento(tal).FaceId=x

bueno, supongo que lo que pienso es posible, pero hasta ahora no lo he
conseguido. Si podeis echarme 'otra' mano os lo agradezco

un saludo y hasta pronto
Ivan
 

Leer las respuestas

#1 Héctor Miguel
03/11/2006 - 05:59 | Informe spam
hola, Ivan !

tengo una una barra de menus con varios submenus
a cuyos elementos nose como hacer referencia directa/sencilla una vez creados
o sea, enprocedimientos independientes del de creacion.
Hasta ahora lo estoyhaciendo a base de sucesivos bucles -> Menus->Submenu->Elemento
aunque asi parece funcionar bien, supongo que debe de haber forma denombrarlos sin los bucles.
He hecho varias pruebas tipo -> With Commandbars(index).Controls(index): .Controls(index)
o directamente-> Commandbars("Caption")
pero de momento me da error. [...]
no deja de ser un poco engorroso tantocodigo para decir solamente algo asi como->
-> Si la Celda(tal)="Cual" entonces el Elemento(tal).FaceId=x
bueno, supongo que lo que pienso es posible, pero hasta ahora no lo he conseguido...



[creo que] te serviria revisar las tecnicas que se describen en los siguientes enlaces:

John Walkenbach
Creating Custom Menus
http://www.j-walk.com/ss/excel/tips/tip53.htm

Ron De Bruin
Disable command bars and controls
http://www.rondebruin.nl/menuid.htm
http://www.rondebruin.nl/menuid.htm#articles

saludos,
hector.

Preguntas similares