엑셀/vba

userform 팝업메뉴 2 chatgpt

do121 2023. 3. 17. 08:16

Private Sub CommandButton1_Click()
    Dim cBar As CommandBar
    Set cBar = Application.CommandBars.Add(Name:="ButtonMenu", Position:=msoBarPopup, Temporary:=True)

    ' 새로운 메뉴를 추가합니다.
    Dim cCtrl As CommandBarControl
    Set cCtrl = cBar.Controls.Add(Type:=msoControlPopup, Temporary:=True)
    cCtrl.Caption = "새로운 메뉴"
    cCtrl.Tag = "NewMenu"
    
    ' 새로운 메뉴에 하위 메뉴를 추가합니다.
    Dim subCtrl As CommandBarControl
    Set subCtrl = cCtrl.Controls.Add(Type:=msoControlButton, Temporary:=True)
    subCtrl.Caption = "메뉴1"
    subCtrl.OnAction = "Menu1_Clicked"
    
    Set subCtrl = cCtrl.Controls.Add(Type:=msoControlButton, Temporary:=True)
    subCtrl.Caption = "메뉴2"
    subCtrl.OnAction = "Menu2_Clicked"
    
    ' 이벤트 핸들러를 연결합니다.
    Application.CommandBars("ButtonMenu").Enabled = True
    Set cBar = Nothing
    Set cCtrl = Nothing
    Set subCtrl = Nothing
    
    ' 메뉴를 보여줍니다.
    CommandBarShowPopup cBar
End Sub

' 메뉴 클릭 이벤트 핸들러입니다.
Sub Menu1_Clicked()
    ' 메뉴 1 클릭 시 실행될 코드를 작성합니다.
End Sub

Sub Menu2_Clicked()
    ' 메뉴 2 클릭 시 실행될 코드를 작성합니다.
End Sub


아래는 우클릭시 팝업메뉴

Private Sub UserForm_Initialize()
    Dim cBar As CommandBar
    Set cBar = Application.CommandBars.Add(Name:="UserFormMenu", Position:=msoBarPopup, Temporary:=True)

    ' 새로운 메뉴를 추가합니다.
    Dim cCtrl As CommandBarControl
    Set cCtrl = cBar.Controls.Add(Type:=msoControlPopup, Temporary:=True)
    cCtrl.Caption = "새로운 메뉴"
    cCtrl.Tag = "NewMenu"
    
    ' 새로운 메뉴에 하위 메뉴를 추가합니다.
    Dim subCtrl As CommandBarControl
    Set subCtrl = cCtrl.Controls.Add(Type:=msoControlButton, Temporary:=True)
    subCtrl.Caption = "메뉴1"
    subCtrl.OnAction = "Menu1_Clicked"
    
    Set subCtrl = cCtrl.Controls.Add(Type:=msoControlButton, Temporary:=True)
    subCtrl.Caption = "메뉴2"
    subCtrl.OnAction = "Menu2_Clicked"
    
    ' 이벤트 핸들러를 연결합니다.
    Application.CommandBars("UserFormMenu").Enabled = True
    Set cBar = Nothing
    Set cCtrl = Nothing
    Set subCtrl = Nothing
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    ' 메뉴를 삭제합니다.
    On Error Resume Next
    Application.CommandBars("UserFormMenu").Delete
    Set cBar = Nothing
End Sub

' 메뉴 클릭 이벤트 핸들러입니다.
Sub Menu1_Clicked()
    ' 메뉴 1 클릭 시 실행될 코드를 작성합니다.
End Sub

Sub Menu2_Clicked()
    ' 메뉴 2 클릭 시 실행될 코드를 작성합니다.
End Sub

'엑셀 > vba' 카테고리의 다른 글

셀 값이 배열에 있는지 비교 chatgpt  (0) 2023.04.10
잔액 구하기 chatgpt  (0) 2023.04.06
userform 팝업메뉴 만들기  (0) 2023.02.24
시트 이동 chatgpt  (0) 2023.02.23
두셀의 값을 바꾸기 chatgpt  (0) 2023.02.23