Sắp xếp Control trong Menubar

Liên hệ QC

__Devil__

Thành viên mới
Tham gia
4/12/12
Bài viết
22
Được thích
22
Donate (Momo)
Donate
Giới tính
Nam
Em chào các bác!
Như tiêu đề em đang tạo một add-ins nhưng các control chỉ sắp xếp theo hàng.
Em muốn sắp xếp lại theo từng cột thì phải làm như thế nào ạ?
Mong các bác chỉ bảo.
Nếu có phương pháp khác các bác cho em học hỏi với ạ.
Cảm ơn tất cả các bác!
1647490320169.png
Mã:
Public Sub AddMenu()

    Dim cbMainMenuBar As CommandBar
    Dim cbcCutomMenu As CommandBarControl
    'Delete any existing one. We must use On Error Resume next in case it does not exist.
    DeleteMenu
    On Error Resume Next
    For Each cbMainMenuBar In Application.CommandBars
        cbMainMenuBar.Delete
    Next
    'Set a CommandBar variable to Worksheet menu bar
    Set cbMainMenuBar = Application.CommandBars.Add("Tool", , False, True)
    cbMainMenuBar.Visible = True
    cbMainMenuBar.Position = msoBarFloating
    'Set a CommandBarControl variable to it
 
    '-------------------------------------------------------------------------
    'Button About
    Set cbcCutomMenu = cbMainMenuBar.Controls.Add(Type:=msoControlButton)
    With cbcCutomMenu
        .Style = msoButtonIconAndCaptionBelow
        .Caption = "&About ExcelUti"
        .FaceId = 1954
        .OnAction = "MenuAbout"
    End With
    '-------------------------------------------------------------------------
 
        'Set a CommandBarControl variable to it
 
    '-------------------------------------------------------------------------
    'Button About
    Set cbcCutomMenu = cbMainMenuBar.Controls.Add(Type:=msoControlButton)
    With cbcCutomMenu
        .Style = msoButtonIconAndCaptionBelow
        .Caption = "&About ExcelUti"
        .FaceId = 1954
        .Execute
        .OnAction = "MenuAbout"
    End With
    '-------------------------------------------------------------------------
     
        'Set a CommandBarControl variable to it
 
    '-------------------------------------------------------------------------
    'Button About
    Set cbcCutomMenu = cbMainMenuBar.Controls.Add(Type:=msoControlButton)
    With cbcCutomMenu
        .Style = msoButtonIconAndCaptionBelow
        .Caption = "&About ExcelUti"
        .FaceId = 1954
        .State = 5
        .OnAction = "MenuAbout"
    End With
    '-------------------------------------------------------------------------
 
    'Popup Upper & Lower
    Set cbcCutomMenu = cbMainMenuBar.Controls.Add(Type:=msoControlPopup)
    With cbcCutomMenu
        .Caption = "&Upper && Lower"
        With .Controls.Add(Type:=msoControlButton)
            .Caption = "&Upper All"
            .FaceId = 80
            .OnAction = "UpperAll"
        End With
     
        With .Controls.Add(Type:=msoControlButton)
            .Caption = "&Lower All"
            .FaceId = 947 '3512 '947
            .OnAction = "LowerAll"
        End With
     
        With .Controls.Add(Type:=msoControlButton)
            .Caption = "Upper &First Letter"
            .FaceId = 309
            .OnAction = "UpperFirstLetter"
        End With
     
        With .Controls.Add(Type:=msoControlButton)
            .Caption = "Upper &All First Letters"
            .FaceId = 309
            .OnAction = "UpperAllFirstLetters"
        End With
    End With
    '-------------------------------------------------------------------------
End Sub
Sub DeleteMenu()
    Dim cbcCutomMenu As CommandBarControl
 
    On Error Resume Next
    For Each cbcCutomMenu In Application.CommandBars("Worksheet Menu Bar").Controls
        cbcCutomMenu.Delete
    Next
    'Application.CommandBars("Worksheet Menu Bar").Controls("&ExcelUti").Delete
    On Error GoTo 0

End Sub
 
Em chào các bác!
Như tiêu đề em đang tạo một add-ins nhưng các control chỉ sắp xếp theo hàng.
Em muốn sắp xếp lại theo từng cột thì phải làm như thế nào ạ?
Mong các bác chỉ bảo.
Nếu có phương pháp khác các bác cho em học hỏi với ạ.
Cảm ơn tất cả các bác!
View attachment 273256
Mã:
Public Sub AddMenu()

    Dim cbMainMenuBar As CommandBar
    Dim cbcCutomMenu As CommandBarControl
    'Delete any existing one. We must use On Error Resume next in case it does not exist.
    DeleteMenu
    On Error Resume Next
    For Each cbMainMenuBar In Application.CommandBars
        cbMainMenuBar.Delete
    Next
    'Set a CommandBar variable to Worksheet menu bar
    Set cbMainMenuBar = Application.CommandBars.Add("Tool", , False, True)
    cbMainMenuBar.Visible = True
    cbMainMenuBar.Position = msoBarFloating
    'Set a CommandBarControl variable to it
 
    '-------------------------------------------------------------------------
    'Button About
    Set cbcCutomMenu = cbMainMenuBar.Controls.Add(Type:=msoControlButton)
    With cbcCutomMenu
        .Style = msoButtonIconAndCaptionBelow
        .Caption = "&About ExcelUti"
        .FaceId = 1954
        .OnAction = "MenuAbout"
    End With
    '-------------------------------------------------------------------------
 
        'Set a CommandBarControl variable to it
 
    '-------------------------------------------------------------------------
    'Button About
    Set cbcCutomMenu = cbMainMenuBar.Controls.Add(Type:=msoControlButton)
    With cbcCutomMenu
        .Style = msoButtonIconAndCaptionBelow
        .Caption = "&About ExcelUti"
        .FaceId = 1954
        .Execute
        .OnAction = "MenuAbout"
    End With
    '-------------------------------------------------------------------------
    
        'Set a CommandBarControl variable to it
 
    '-------------------------------------------------------------------------
    'Button About
    Set cbcCutomMenu = cbMainMenuBar.Controls.Add(Type:=msoControlButton)
    With cbcCutomMenu
        .Style = msoButtonIconAndCaptionBelow
        .Caption = "&About ExcelUti"
        .FaceId = 1954
        .State = 5
        .OnAction = "MenuAbout"
    End With
    '-------------------------------------------------------------------------
 
    'Popup Upper & Lower
    Set cbcCutomMenu = cbMainMenuBar.Controls.Add(Type:=msoControlPopup)
    With cbcCutomMenu
        .Caption = "&Upper && Lower"
        With .Controls.Add(Type:=msoControlButton)
            .Caption = "&Upper All"
            .FaceId = 80
            .OnAction = "UpperAll"
        End With
    
        With .Controls.Add(Type:=msoControlButton)
            .Caption = "&Lower All"
            .FaceId = 947 '3512 '947
            .OnAction = "LowerAll"
        End With
    
        With .Controls.Add(Type:=msoControlButton)
            .Caption = "Upper &First Letter"
            .FaceId = 309
            .OnAction = "UpperFirstLetter"
        End With
    
        With .Controls.Add(Type:=msoControlButton)
            .Caption = "Upper &All First Letters"
            .FaceId = 309
            .OnAction = "UpperAllFirstLetters"
        End With
    End With
    '-------------------------------------------------------------------------
End Sub
Sub DeleteMenu()
    Dim cbcCutomMenu As CommandBarControl
 
    On Error Resume Next
    For Each cbcCutomMenu In Application.CommandBars("Worksheet Menu Bar").Controls
        cbcCutomMenu.Delete
    Next
    'Application.CommandBars("Worksheet Menu Bar").Controls("&ExcelUti").Delete
    On Error GoTo 0

End Sub
Bạn tìm trên diễn đàn có rất nhiều bài viết nói về vấn đề này, bạn có thể tham khảo ở 2 chủ đề này.
 
Upvote 0
Bạn tìm trên diễn đàn có rất nhiều bài viết nói về vấn đề này, bạn có thể tham khảo ở 2 chủ đề này.
Bác đang hiểu sai ý em rồi ạ. Em chỉ muốn hỏi làm sao để sắp xếp được các button theo từng hàng thôi ạ?
 
Upvote 0

Sai chỗ nào bạn?
Người ta quá am hiểu bạn đang cần làm cái gì và đã chỉ cho con đường tới thiên đường rồi.

Cái CommandBars thuộc về Excel cổ đại 2003 trở xuống.
Còn Excel đời mới từ phiên bản 2007 trở lên dùng một thứ gọi là Ribbon, người ta đã chỉ cho bài cách làm ở trên đó.

Chẳng qua Excel đời mới vẫn hỗ trợ cái cổ đại kia nên vẫn hiển thị được trên Ribbon, nhưng nó cùi bắp, cùi mía thế thôi. Muốn xịn, ngon, bổ thì làm theo bài trên.
 
Upvote 0
Sai chỗ nào bạn?
Người ta quá am hiểu bạn đang cần làm cái gì và đã chỉ cho con đường tới thiên đường rồi.

Cái CommandBars thuộc về Excel cổ đại 2003 trở xuống.
Còn Excel đời mới từ phiên bản 2007 trở lên dùng một thứ gọi là Ribbon, người ta đã chỉ cho bài cách làm ở trên đó.

Chẳng qua Excel đời mới vẫn hỗ trợ cái cổ đại kia nên vẫn hiển thị được trên Ribbon, nhưng nó cùi bắp, cùi mía thế thôi. Muốn xịn, ngon, bổ thì làm theo bài trên.
Cảm ơn bạn. Hôm qua mình đã sử dụng customUI để giải quyết vấn đề này. Tuy nhiên trong CustomUI mình không tạo được dạng button popup. Bạn có thể giúp mình không?
 
Upvote 0
Cảm ơn bạn. Hôm qua mình đã sử dụng customUI để giải quyết vấn đề này. Tuy nhiên trong CustomUI mình không tạo được dạng button popup. Bạn có thể giúp mình không?
Tôi e rằng cái bạn cần không phải là popup mà là DropdownMenu, bạn có thể tham khảo ở đây.
Hinh.png
 
Upvote 0
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom