problemas con commandbar de un menu personalizado

15/08/2007 - 23:46 por Karina | Informe spam
Hola

Mi problema es el siguiente estoy haciendo un menu personalizado para una
macro, pero tengo un problema con respecto a un submenú en el cual utilizó
marcas de verificación, es decir que cuando un elemnto del menú esta
seleccionado otras opciones del ménu se deshabilitan y así viceversa. Pero
cuando lo intento hacer me marca un error de "Object required" y nose a que
se refiera.

Este es parte de mi código:

Private Sub IniBN_Click()

'Dim myBar As CommandBarControl, myBar As CommandBarControl
Dim myBar As CommandBarControl
RemoveMenu
Set myBar = Application.CommandBars(1).Controls.Add(msoControlPopup, , ,
, True)
With myBar
.Caption = "&MÓDULO DE ZAPATAS"
.Tag = "Módulo de zapatas"
.BeginGroup = False
End With
If myBar Is Nothing Then Exit Sub

'Set myBar = CommandBars.Add(Name:="foundCFE_CB", Position:=msoBarPopup,
temporary:=False)
With myBar
.Controls.Add(Type:=msoControlPopup, Before:=1).Caption = "Archivo"
.Controls.Add(Type:=msoControlPopup).Caption = "Tipo de Análisis"
.Controls.Add(Type:=msoControlPopup).Caption = "Opciones"
.Controls.Add(Type:=msoControlPopup).Caption = "Ayuda"
With .Controls("Archivo")
.Controls.Add(Type:=msoControlButton, Before:=1, ID:).Caption =
"Nuevo"
.Controls("Nuevo").OnAction = "Hoja1.Nuevo_Click"
.Controls.Add(Type:=msoControlButton, ID:#).Caption = "Abrir"
.Controls("Abrir").OnAction = "Hoja1.Abrir_Click"
.Controls.Add(Type:=msoControlButton, ID:=3).Caption = "Guardar"

'Corrección hecha: Se sustituyó "Controls("Abrir")" por
"Controls("Guardar")" 16-06-2007 KCF
.Controls("Guardar").OnAction = "Hoja1.Guardar_Click"
.Controls.Add(Type:=msoControlButton, ID:=3).Caption = "Guardar Como..."
.Controls("Guardar Como...").OnAction = "Hoja1.GuardarComo_Click"
.Controls.Add(Type:=msoControlButton, ID:#).Caption = "Archivo Cargas"
.Controls("Archivo Cargas").OnAction = "Hoja1.ArchivoCargas_Click"
.Controls.Add(Type:=msoControlButton).Caption = "Salir"
.Controls("Archivo Cargas").BeginGroup = True
.Controls("Salir").BeginGroup = True
.Controls("Archivo Cargas").Enabled = False
End With
With .Controls("Tipo de Análisis") 'Tipo de submenu con marca de
verificación
.Controls.Add(Type:=msoControlButton, Before:=1).Caption = "Individual"
.Controls("Individual").OnAction = "Hoja1.Individual_Click"
.Controls.Add(Type:=msoControlButton).Caption = "Conjunto P/Torre"
.Controls("Conjunto P/Torre").OnAction = "Hoja1.ConjTorre_Click"
.Controls.Add(Type:=msoControlButton).Caption = "Ejecutar"
.Controls("Ejecutar").OnAction = "Hoja1.Ejecutar_Click"

.Controls("Individual").State = msoButtonDown
.Controls("Ejecutar").BeginGroup = True
.Controls("Ejecutar").Enabled = False
End With
With .Controls("Opciones")
.Controls.Add(Type:=msoControlButton, Before:=1).Caption = "Tipo de
Cimiento"
.Controls.Add(Type:=msoControlButton).Caption = "Especificaciones"
.Controls("Especificaciones").OnAction = "Hoja1.Especificacion_Click"
.Controls("Especificaciones").BeginGroup = True
.Controls("Tipo de Cimiento").Enabled = False
End With
With .Controls("Ayuda")
.Controls.Add(Type:=msoControlButton, Before:=1, ID:=3).Caption =
"Acerca de ..."
.Controls("Acerca de ...").FaceId = 133
.Controls("Acerca de ...").OnAction = "Hoja1.Acerca_LBL_Click"
' .Controls("Acerca de ...").OnAction = "msgbox ""Hello!"""
End With
' .Controls.Add().Caption = "Custom0"
' .Controls.Add(Type:=msoControlButton, Before:=1).Caption = "Custom2"
' .Controls.Add Type:=msoControlButton, ID:=3
' .Controls.Add(Type:=msoControlComboBox).Caption = "Custom1"
End With

'CommandBars("Custom").Controls("Custom1").BeginGroup = True
'If myBar.Controls("Custom2").State = msoButtonDown Then
' Remove check mark next to menu item.
' myBar.Controls("Custom2").State = msoButtonUp
'MsgBox "Custom1 is now unchecked"
' Else
' Add check mark next to menu item.
' myBar.Controls("Custom2").State = msoButtonDown
'MsgBox "Custom1 is now checked"
'End If

'Dim newSub As Object

'Set newSub ' CommandBars("Custom").Controls.Add(Type:=msoControlPopup,
Before:=1).Caption = "NewSub"


' With newSub
' .Controls.Add(Type:=msoControlPopup, Before:=1).Caption = "NewSub"
' End With

'Dim newSub As Object
' Set newSub = CommandBars("Worksheet menu bar").Controls("Tools")
' With newSub
' .Controls.Add(Type:=msoControlPopup, Before:=1).Caption = "NewSub"
' End With


''CommandBars("Custom").la

'End If 'Not foundflag

'myBar.ShowPopup 12, 200

End Sub

Sub Individual_Click()

Dim myBar As CommandBarControl

'Set myBar = CommandBars("foundCFE_CB")
Set myBar = Application.CommandBars(1).Controls.Add(msoControlPopup, , ,
, True)
'If (myBar.Controls("Tipo de Análisis").Controls("Individual").State =
msoButtonDown) Then
'myBar.Controls("Tipo de Análisis").Controls("Individual").State =
msoButtonDown
'myBar.Controls("Tipo de Análisis").Controls("Conjunto P/Torre").State =
msoButtonUp
With myBar
.Controls("Archivo").Controls("Nuevo").Enabled = True
.Controls("Archivo").Controls("Abrir").Enabled = True
.Controls("Archivo").Controls("Guardar Como...").Enabled = True
.Controls("Archivo").Controls("Guardar").Enabled = True
.Controls("Archivo").Controls("Archivo Cargas").Enabled = False
End With
End Sub

Sub ConjTorre_Click()

'Dim myBar As CommandBarControl
'If (myBar.Controls("Tipo de Análisis").Controls("Individual").State =
msoButtonDown) Then
Set myBar = myBar.Controls("Tipo de
Análisis").Controls("Individual").State = msoButtonUp
myBar.Controls("Tipo de Análisis").Controls("Conjunto P/Torre").State =
msoButtonDown
myBar.Controls("Archivo Cargas").Controls().Enabled = True
myBar.Controls("Archivo").Controls("Nuevo").Enabled = False
myBar.Controls("Archivo").Controls("Abrir").Enabled = False
myBar.Controls("Archivo").Controls("Guardar Como...").Enabled = False
myBar.Controls("Archivo").Controls("Guardar").Enabled = False
myBar.Controls("Archivo").Controls("Archivo Cargas").Enabled = True

End Sub

Espero puedan ayudarme de antemano gracias.

Saludos

Preguntas similare

Leer las respuestas

#6 Karina
16/08/2007 - 01:22 | Informe spam
Ok, lo voy a intentar.

Muchas gracias!!

Saludos
"Ivan" escribió:

On 16 ago, 00:38, Karina wrote:
> Hola
>
> De hecho Dim myBar As CommandBarControl, myBar As CommandBarControl si lo
> tengo declarado y si crea el menu el problema solo esta en las marcas de
> verificación.
>
> Dejo de nuevo parte del código ya sin comentarios, espero este mas entendible.
>
> Private Sub IniBN_Click()
>
> Dim myBar As CommandBarControl
> RemoveMenu
> Set myBar = Application.CommandBars(1).Controls.Add(msoControlPopup, , ,
> , True)
> With myBar
> .Caption = "&MÓDULO DE ZAPATAS"
> .Tag = "Módulo de zapatas"
> .BeginGroup = False
> End With
> If myBar Is Nothing Then Exit Sub
>
> 'Set myBar = CommandBars.Add(Name:="foundCFE_CB", Position:=msoBarPopup,
> temporary:=False)
> With myBar
> .Controls.Add(Type:=msoControlPopup, Before:=1).Caption = "Archivo"
> .Controls.Add(Type:=msoControlPopup).Caption = "Tipo de Análisis"
> .Controls.Add(Type:=msoControlPopup).Caption = "Opciones"
> .Controls.Add(Type:=msoControlPopup).Caption = "Ayuda"
> With .Controls("Archivo")
> .Controls.Add(Type:=msoControlButton, Before:=1, ID:).Caption > > "Nuevo"
> .Controls("Nuevo").OnAction = "Hoja1.Nuevo_Click"
> .Controls.Add(Type:=msoControlButton, ID:#).Caption = "Abrir"
> .Controls("Abrir").OnAction = "Hoja1.Abrir_Click"
> .Controls.Add(Type:=msoControlButton, ID:=3).Caption = "Guardar"
>
> 'Corrección hecha: Se sustituyó "Controls("Abrir")" por
> "Controls("Guardar")" 16-06-2007 KCF
> .Controls("Guardar").OnAction = "Hoja1.Guardar_Click"
> .Controls.Add(Type:=msoControlButton, ID:=3).Caption = "Guardar Como..."
> .Controls("Guardar Como...").OnAction = "Hoja1.GuardarComo_Click"
> .Controls.Add(Type:=msoControlButton, ID:#).Caption = "Archivo Cargas"
> .Controls("Archivo Cargas").OnAction = "Hoja1.ArchivoCargas_Click"
> .Controls.Add(Type:=msoControlButton).Caption = "Salir"
> .Controls("Archivo Cargas").BeginGroup = True
> .Controls("Salir").BeginGroup = True
> .Controls("Archivo Cargas").Enabled = False
> End With
> With .Controls("Tipo de Análisis") 'Tipo de submenu con marca de
> verificación
> .Controls.Add(Type:=msoControlButton, Before:=1).Caption = "Individual"
> .Controls("Individual").OnAction = "Hoja1.Individual_Click"
> .Controls.Add(Type:=msoControlButton).Caption = "Conjunto P/Torre"
> .Controls("Conjunto P/Torre").OnAction = "Hoja1.ConjTorre_Click"
> .Controls.Add(Type:=msoControlButton).Caption = "Ejecutar"
> .Controls("Ejecutar").OnAction = "Hoja1.Ejecutar_Click"
>
> .Controls("Individual").State = msoButtonDown
> .Controls("Ejecutar").BeginGroup = True
> .Controls("Ejecutar").Enabled = False
> End With
> With .Controls("Opciones")
> .Controls.Add(Type:=msoControlButton, Before:=1).Caption = "Tipo de
> Cimiento"
> .Controls.Add(Type:=msoControlButton).Caption = "Especificaciones"
> .Controls("Especificaciones").OnAction = "Hoja1.Especificacion_Click"
> .Controls("Especificaciones").BeginGroup = True
> .Controls("Tipo de Cimiento").Enabled = False
> End With
> With .Controls("Ayuda")
> .Controls.Add(Type:=msoControlButton, Before:=1, ID:=3).Caption > > "Acerca de ..."
> .Controls("Acerca de ...").FaceId = 133
> .Controls("Acerca de ...").OnAction = "Hoja1.Acerca_LBL_Click"
>
> End With
>
> End With
>
> End Sub
>
> Sub Individual_Click()
>
> Set myBar = Application.CommandBars(1).Controls.Add(msoControlPopup, , ,
> , True)
> 'myBar.Controls("Tipo de Análisis").Controls("Individual").State > > msoButtonDown
> 'myBar.Controls("Tipo de Análisis").Controls("Conjunto P/Torre").State > > msoButtonUp
> With myBar
> .Controls("Archivo").Controls("Nuevo").Enabled = True
> .Controls("Archivo").Controls("Abrir").Enabled = True
> .Controls("Archivo").Controls("Guardar Como...").Enabled = True
> .Controls("Archivo").Controls("Guardar").Enabled = True
> .Controls("Archivo").Controls("Archivo Cargas").Enabled = False
> End With
> End Sub
>
> Sub ConjTorre_Click()
>
> Set myBar = myBar.Controls("Tipo de
> Análisis").Controls("Individual").State = msoButtonUp
> myBar.Controls("Tipo de Análisis").Controls("Conjunto P/Torre").State > > msoButtonDown
> myBar.Controls("Archivo Cargas").Controls().Enabled = True
> myBar.Controls("Archivo").Controls("Nuevo").Enabled = False
> myBar.Controls("Archivo").Controls("Abrir").Enabled = False
> myBar.Controls("Archivo").Controls("Guardar Como...").Enabled = False
> myBar.Controls("Archivo").Controls("Guardar").Enabled = False
> myBar.Controls("Archivo").Controls("Archivo Cargas").Enabled = True
>
> End Sub
>
> Sub RemoveMenu()
> DeleteCustomCommandBarControl "Módulo de zapatas"
> End Sub
> Private Sub DeleteCustomCommandBarControl(CustomControlTag As String)
> On Error Resume Next
> Do
> Application.CommandBars.FindControl(, , CustomControlTag,
> False).Delete
> Loop Until Application.CommandBars.FindControl(, , CustomControlTag,
> False) Is Nothing
> On Error GoTo 0
> End Sub
>
> "Ivan" escribió:
>
>
>
> > On 15 ago, 23:56, Ivan wrote:
> > > hola Karina,
>
> > > me da la impresion de que esto lo tienes como comentario,=>
>
> > > > 'Dim myBar As CommandBarControl, myBar As CommandBarControl
>
> > > por eso, probablemente te dice que te hace falta un objeto, por que
> > > realmente no lo has declarado
>
> > > prueba a quitarle al comilla simple (apostrofe) que hay delante de la
> > > linea (esta comilla convierte la linea en comentario, y vba no la toma
> > > en cuebnta)
>
> > > si sigue sin funcionar comentas (no he mirado el resto)
>
> > > un saludo Ivan
>
> > hola de nuevo,
>
> > y mirandolo (solo un poco) mas, creo que el problema se repite por
> > todos o casi todos los procedimientos
>
> > prueba a ir probando a quitar la/s comilla/s.
>
> > de todas formas, no se cual sera tu intencion, pero visto por encima,
> > me da la impresion de que tienes un poco de [exceso de] caos en los
> > codigos.
>
> > posiblemente ( y no me hagas demasiado caso) podrias unificar la
> > creacion de los menus e ir mostrando/ocultando y/o habilitando /
> > deshabilitando segun te interese, aparte de que, salvo que los menus
> > se queden permanentes como opcion entre los personalizados, tambien te
> > interesaria (posiblemente) eliminarlos, pej. al cerrar el archivo
>
> > bueno, yo no controlo mucho el tema, pero si aportas detalles mas
> > concretos, seguro que si no yo, alguien mas te echa una mano.
>
> > un saludo
> > Ivan- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -

hola,

de todas formas y sin mirarlo demasiado tampoco ahora ¿por que no
pruebas a asignar todas las propiedades juntas al crear el boton/
elemnto?

a mi me suele funcionar mas o menos esto:

Sub CrearBarra()
Dim MiBarra As CommandBar
Dim miElemento As CommandBarButton
On Error Resume Next
Application.CommandBars("MiBarra").Delete
On Error GoTo 0
Set MiBarra = Application.CommandBars.Add(Name:="MiBarra", _
Position:=msoBarPopup, Temporary:=True)
Set miElemento = MiBarra.Controls.Add(Type:=msoControlButton)
With miElemento
.Caption = "&Mostrar Msgbox Nº1"
.OnAction = "VerMsj1"
.State = msoButtonDown
End With
Set miElemento = MiBarra.Controls.Add(Type:=msoControlButton)
With miElemento
.Caption = "M&ostrar Msgbox N2"
.OnAction = "VerMsj2"
.State = msoButtonUp
End With
' y asi hasta crear todos los elemntos/botones
End Sub

solo como sugerencia, para ver si te hace mas facil encontrar el fallo

un saludo
Ivan


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