eliminar control del menu bar

29/07/2005 - 21:22 por Drom | Informe spam
supongamos que quiero eliminar un control de una barra de herramientas, o
bien del menu bar.

es decir supongamos que quiero eliminar un control dado de la barra de
herramientas Formato.



Hi and many thanks in advance!

1) si quiero añadir 5 controles, como el control "&Visual Basic Editor" en
la barra de herramientas estandar la siguiente macro serviria:

Sub B()
Dim X As Byte
For X = 1 To 5
Application.CommandBars("Standard").Controls.Add
Type:=msoControlButton, ID:95, Before:=1
' "&Visual Basic Editor" > ID = 1695
Next X
End Sub

2) Si quisiera eliminar este control en todas las barras de herramientas
existentes en excel, la siguiente macro serviria:


Sub Disable1695Controls()
Dim CBControl As CommandBarControl
Dim CBar As Integer
Dim X As Byte
Application.ScreenUpdating = False
On Error Resume Next
For CBar = 1 To Application.CommandBars.Count
For Each CBControl In CommandBars(CBar).Controls
If CBControl.ID = 1695 Then CBControl.Enabled = False
Application.CommandBars(CBar).FindControl(ID:95,
Recursive:=True).Enabled = False
Next CBControl
Next CBar
Application.OnKey "%{F11}", ""
On Error GoTo 0
End Sub






3) si quiero añadir 5 controles, tales que el: "&Visual Basic Editor" en el
menu archivo del menu "Barra de menus de la hoja" la siguiente macro sirve:

Sub C()
Dim X As Byte
For X = 1 To 5
Application.CommandBars("File").Controls.Add Type:=msoControlButton,
ID:95, Before:=1
'"&Visual Basic Editor" ID = 1695
Next X
End Sub




pero:

Como podria eliminar cada uno de estos 5 controles a traves de vba, "he
dicho 5, pero podrian ser X".
como podria eliminar estos controles cuando estan dentro de otros controles
y/o menus.
tal que por ejemplo el control presente en herramientas\macro\editor de
visual basic

o uno mismo que yo mismo hubiera podido crear en una barra de herramientas
personalizada en donde hubiera podido poner ademas del icono abrir, cerrar
etc, 3 controles cuyo id95, uno tras otro y despues otros 4 dentro de un
menu en esta misma barra de herramientas personalizada


Gracias!!

Preguntas similare

Leer las respuestas

#1 KL
29/07/2005 - 23:34 | Informe spam
Hola Drom,

No se si te he entendido bien, pero prueba este codigo:

'Para crear controles con un Tag
Sub C()
Dim x As Byte
For x = 1 To 5
Application.CommandBars("File").Controls.Add( _
Type:=msoControlButton, _
ID:95, _
Before:=1).Tag = "Button" & x
Next x
End Sub

'Para eliminar un control a partir de sus parametros
'El unico parametro caracteristico de este y solo este boton es su Tag.
Sub D()
Application.CommandBars("File").FindControl( _
Type:=msoControlButton, _
ID:95, _
Tag:="Button3", _
Recursive:=True).Delete
End Sub

Saludos,
KL


"Drom" wrote in message
news:


supongamos que quiero eliminar un control de una barra de herramientas, o
bien del menu bar.

es decir supongamos que quiero eliminar un control dado de la barra de
herramientas Formato.



Hi and many thanks in advance!

1) si quiero añadir 5 controles, como el control "&Visual Basic Editor" en
la barra de herramientas estandar la siguiente macro serviria:

Sub B()
Dim X As Byte
For X = 1 To 5
Application.CommandBars("Standard").Controls.Add
Type:=msoControlButton, ID:95, Before:=1
' "&Visual Basic Editor" > ID = 1695
Next X
End Sub

2) Si quisiera eliminar este control en todas las barras de herramientas
existentes en excel, la siguiente macro serviria:


Sub Disable1695Controls()
Dim CBControl As CommandBarControl
Dim CBar As Integer
Dim X As Byte
Application.ScreenUpdating = False
On Error Resume Next
For CBar = 1 To Application.CommandBars.Count
For Each CBControl In CommandBars(CBar).Controls
If CBControl.ID = 1695 Then CBControl.Enabled = False
Application.CommandBars(CBar).FindControl(ID:95,
Recursive:=True).Enabled = False
Next CBControl
Next CBar
Application.OnKey "%{F11}", ""
On Error GoTo 0
End Sub






3) si quiero añadir 5 controles, tales que el: "&Visual Basic Editor" en
el menu archivo del menu "Barra de menus de la hoja" la siguiente macro
sirve:

Sub C()
Dim X As Byte
For X = 1 To 5
Application.CommandBars("File").Controls.Add
Type:=msoControlButton, ID:95, Before:=1
'"&Visual Basic Editor" ID = 1695
Next X
End Sub




pero:

Como podria eliminar cada uno de estos 5 controles a traves de vba, "he
dicho 5, pero podrian ser X".
como podria eliminar estos controles cuando estan dentro de otros
controles y/o menus.
tal que por ejemplo el control presente en herramientas\macro\editor de
visual basic

o uno mismo que yo mismo hubiera podido crear en una barra de herramientas
personalizada en donde hubiera podido poner ademas del icono abrir, cerrar
etc, 3 controles cuyo id95, uno tras otro y despues otros 4 dentro de
un menu en esta misma barra de herramientas personalizada


Gracias!!


Respuesta Responder a este mensaje
#2 KL
30/07/2005 - 05:41 | Informe spam
Hola Drom,

Prueba esto:

Sub test()
Dim Barras As Variant
Barras = Array("AA", "BB")

For i = LBound(Barras) To UBound(Barras)
On Error Resume Next
With Application.CommandBars(Barras(i))
Do
.FindControl(ID:95, recursive:=True).Delete
If Err.Number <> 0 Then Exit Do
Loop
End With
On Error GoTo 0
Next i
End Sub


Saludos,
KL



"Drom" wrote in message
news:%


Intentare explicarlo mejor.

yo quiero eliminar todos los controles cuyo ID sea igual a 1695, "1695 es
el ID de: "&Visual Basic Editor"" al igual que 23 es el Id de Abrir.

si utilizo la macro "Disable1695Controls" puedo eliminar todos los
controles cuyo id95 en cualquier barra de herramientas, pero no puedo
eliminar los controles cuyo id95 contenidos dentro de los menu,
contenidos en las barras de herramientas o en el menubar.

Sub Disable1695Controls()
Dim CBControl As CommandBarControl
Dim CBar As Integer
Dim X As Byte
Application.ScreenUpdating = False
On Error Resume Next
For CBar = 1 To Application.CommandBars.Count
For Each CBControl In CommandBars(CBar).Controls
If CBControl.ID = 1695 Then CBControl.Enabled = False
Application.CommandBars(CBar).FindControl(ID:95,
Recursive:=True).Enabled = False
Next CBControl
Next CBar
Application.OnKey "%{F11}", ""
On Error GoTo 0
End Sub

el libro que adjunto creo que explica mejor lo que pretendo!


Muchas Gracias!!



Respuesta Responder a este mensaje
#3 Drom
03/08/2005 - 01:36 | Informe spam
Muchas Gracias!


Supongo que me explique bien.

La solucion que aportas puede ser utilizada pq al eliminarse cada ID
.FindControl(ID:95, recursive:=True).Delete
puede ser utilizada otra vez.

pero cuando decia eliminar, me referia a deshabilitar el control.

utilizando la siguiente macro:

Sub DeshabilitaCiertosControles()
Dim CBControl As Variant 'As CommandBarControl
Dim Cbar As Integer
Dim X As Byte
On Error Resume Next
For Cbar = 1 To Application.CommandBars.Count
For Each CBControl In CommandBars(Cbar).Controls
If CBControl.ID = 1695 Then CBControl.Enabled = False
Application.CommandBars(Cbar).FindControl(ID:95,
Recursive:=True).Enabled = False
Next CBControl
Next Cbar
End Sub


deshabilito todos los controles cuya ID sea 1695, excepto aquello duplicados
que esten dentro de un menu bar como por ejemplo "Archivo, EDIT" etc.




Mientas que utilizando un apaño tal que:


Sub Paso1() 'Deshabilita los Controles cuya ID = 1695
Dim CBControl As Variant 'As CommandBarControl
Dim Cbar As Integer
Dim X As Byte
Application.ScreenUpdating = False
On Error Resume Next

For Cbar = 1 To Application.CommandBars.Count
For Each CBControl In CommandBars(Cbar).Controls
Debug.Print CBControl.Caption
If CBControl.Type = 10 Then
Call Paso2(CBControl)
Else
If CBControl.ID = 1695 Then CBControl.Enabled = False
Application.CommandBars(Cbar).FindControl(ID:95,
Recursive:=True).Enabled = False
End If
Next CBControl
Next Cbar
'Application.OnKey "%{F11}", ""
'Application.CommandBars("PLY").Enabled = False
'CommandBars("Toolbar List").Enabled = False
On Error GoTo 0
End Sub

Sub Paso2(Cbar As Variant)
Dim CBControl
For Each CBControl In Cbar.Controls
Debug.Print CBControl.Caption
If CBControl.Type = 10 Then
Call Paso2(CBControl)
Else
If CBControl.ID = 1695 Then CBControl.Enabled = False
'Application.CommandBars(Cbar).FindControl(ID:95,
Recursive:=True).Enabled = False
End If
Next
End Sub


resuelvo la papeleta salvo que al no poder "o no saber como utilizar:
'Application.CommandBars(Cbar).FindControl(ID:95,
Recursive:=True).Enabled = False" en el paso2

tengo la posibilidad de customizar la barra de herramientas y volver a
introducir otros controles cuya ID95


finalmente he decidido una solucion facil, pero que queria evitar:

CommandBars("Toolbar List").Enabled = False

Si alguien quiere romperse la cabeza e intentar saber como deshabilitar
controles cuando estos estan duplicados y dentro de menus, que a su vez
tengan submenus, susubmenus...


MIL GRACIAS !!!!!!!!!!!!!!
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida