Excel - Menun en Userform

   
Vista:

Menun en Userform

Publicado por Undertaker (14 intervenciones) el 29/08/2008 01:54:05
Hola que tal!!

Requiero de su ayuda para poner un menu en un Userform, no encuentro el boton o el icono, y es por eso que pido su ayuda.

Informacion Windows 2003 VBA 6.5

Gracias.

Undertaker!!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Menun en Userform

Publicado por Abraham Valencia (2418 intervenciones) el 29/08/2008 02:33:15
Hola, pues, los userform de VBA no tienen controles de menu... hay que usar API`s y modulos de clase para crearselos:

http://www.dailydoseofexcel.com/archives/2006/03/06/a-menu-on-a-userform/

Abraham
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JuanC

RE:Menun en Userform

Publicado por JuanC (1053 intervenciones) el 30/08/2008 19:14:30
Option Explicit
Private Declare Function apiFindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function apiClientToScreen Lib "user32" Alias "ClientToScreen" (ByVal hWnd As Long, lpPoint As PointAPI) As Long
Private Declare Function apiGetSystemMetrics Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex&) As Long
Private Const SM_CYCAPTION = 4
Private Type PointAPI
X As Long
Y As Long
End Type
Private Menu As Office.CommandBar

Private Sub btnSalir_Click()
Unload Me
End Sub
'//mnuArchivo es el nombre de una etiqueta (Label1)
Private Sub mnuArchivo_Click()
Dim P As PointAPI, hWnd&

hWnd = apiFindWindow(vbNullString, Me.Caption)

With mnuArchivo
.SpecialEffect = fmSpecialEffectSunken
P.X = .Left
P.Y = .Top + 1 + apiGetSystemMetrics(SM_CYCAPTION)
End With

Call apiClientToScreen(hWnd, P)

Menu.ShowPopup P.X, P.Y
End Sub

Private Sub mnuArchivo_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
mnuArchivo.SpecialEffect = fmSpecialEffectRaised
End Sub

Private Sub UserForm_Initialize()
Dim Save_ As Office.CommandBarButton
Dim Open_ As Office.CommandBarButton

Set Menu = Application.CommandBars.Add("MyPopup", msoBarPopup, , True)
With Menu
.Name = "MyPopup"
.Enabled = True
End With

Set Open_ = Menu.Controls.Add(msoControlButton, 1, "8890", , True)
With Open_
.Caption = "&Abrir..."
.Enabled = True
.FaceId = 23
.OnAction = "Open_" '//Procedimiento al que llama...
.Style = msoButtonIconAndCaption
.Visible = True
End With

Set Save_ = Menu.Controls.Add(msoControlButton, 1, "8889", , True)
With Save_
.Caption = "&Guardar..."
.Enabled = True
.FaceId = 3
.OnAction = "Save_"
.Style = msoButtonIconAndCaption
.Visible = True
.BeginGroup = True
End With
End Sub

Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
mnuArchivo.SpecialEffect = fmSpecialEffectFlat
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Menu.Delete
Set Menu = Nothing
Unload Me
End Sub

Saludos desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Menun en Userform

Publicado por Undertaker (14 intervenciones) el 03/09/2008 00:14:29
Hola que tal!!!!

Gracias por el codigo, aunque me pregunto de que sera, una macro? o con esto me puede salir un userform con el menu?

Disculpa mi ignorancia, o si podras darme un explicacion que podria hacer, por que le doy a macros y no aparece macro.

Agradezco tu ayuda y que perdones mi ignorancia.

Saludos y disculpa las molestias.

Undertaker!!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar