Ribbon-DropDown

Liên hệ QC

1convit789

Thành viên chính thức
Tham gia
16/10/13
Bài viết
94
Được thích
46
Giới tính
Nữ
Mọi người ai biết chỉ e với.. E đang học chương 18 : Ribbon; mục xây dựng điều khiển dropDown
Khi e dùng CUE để copy callback thì Thủ tục "SelectSheet_getItemId" không xuất hiện trong mục General callback để copy vào VBA ạ?. Không biết có phải do lỗi này không mà file của e không hiện tên sheet trong DropDown Chọn Sheet đc.
 

File đính kèm

  • Capture.JPG
    Capture.JPG
    71.5 KB · Đọc: 49
  • Book1.xlsm
    14.2 KB · Đọc: 17
  • Untitled.png
    Untitled.png
    120.7 KB · Đọc: 51
Mọi người ai biết chỉ e với.. E đang học chương 18 : Ribbon; mục xây dựng điều khiển dropDown
Khi e dùng CUE để copy callback thì Thủ tục "SelectSheet_getItemId" không xuất hiện trong mục General callback để copy vào VBA ạ?. Không biết có phải do lỗi này không mà file của e không hiện tên sheet trong DropDown Chọn Sheet đc.
Bạn thay code này vào code của bạn trong module1.
Mã:
Option Explicit
Public RibbonUI As IRibbonUI
'Private mwkbNavigation As Workbook
'Callback for customUI.onLoad
Sub RibbonUI_onload(ribbon As IRibbonUI)
Set RibbonUI = ribbon
End Sub

'Callback for SelectSheet onAction
Sub Selectsheet_click(control As IRibbonControl, id As String, index As Integer)
    If ThisWorkbook.Sheets(index + 1).Visible = xlSheetVisible Then ThisWorkbook.Sheets(index + 1).Select
End Sub

'Callback for SelectSheet getItemCount
Sub SelectSheet_getItemCount(control As IRibbonControl, ByRef returnedVal)
    returnedVal = ThisWorkbook.Worksheets.Count
End Sub

'Callback for SelectSheet getItemLabel
Sub SelectSheet_getItemLabel(control As IRibbonControl, index As Integer, ByRef returnedVal)
        returnedVal = ThisWorkbook.Worksheets(index + 1).Name
End Sub

'Callback for SelectVisible onAction
Sub SheetVisible_click(control As IRibbonControl, id As String, index As Integer)
    MsgBox index
End Sub
'Callback for SelectSheet getItemLabel
Sub SelectSheet_getItemId(control As IRibbonControl, index As Integer, ByRef id)
    id = "SelectSheet" & index
End Sub
Thêm code này vào trong ThisWorkbook của bạn.
Mã:
Option Explicit

Private Sub Workbook_NewChart(ByVal Ch As Chart)
    RibbonUI.Invalidate
End Sub

Private Sub Workbook_NewSheet(ByVal Sh As Object)
    RibbonUI.Invalidate
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    RibbonUI.Invalidate
End Sub

Private Sub Workbook_SheetBeforeDelete(ByVal Sh As Object)
    RibbonUI.Invalidate
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    RibbonUI.Invalidate
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
'Callback for SelectSheet getItemCount Sub SelectSheet_getItemCount(control As IRibbonControl, ByRef returnedVal) returnedVal = ThisWorkbook.Worksheets.Count End Sub
Cảm ơn bác nhiều e đã là được.. chỉ ko viết code cho getItemCount thôi mà nó ko hiện tên sheet luôn ghê thiệt.. do trong sách ko đề cập tới
 

File đính kèm

  • 0410bcb8629799c9c086.jpg
    0410bcb8629799c9c086.jpg
    832.3 KB · Đọc: 38
Upvote 0
Bạn thay code này vào code của bạn trong module1.
Mã:
Option Explicit
Public RibbonUI As IRibbonUI
'Private mwkbNavigation As Workbook
'Callback for customUI.onLoad
Sub RibbonUI_onload(ribbon As IRibbonUI)
Set RibbonUI = ribbon
End Sub

....
[/QUOTE]
Anh ơi, cho em hỏi trường hợp mình muốn hiển thị trong DropDown những sheet khác ngoại trừ sheetA, sheetB, Sheet1, Sheet2 thì sao ạ.
Em cảm ơn.
 
Upvote 0
Up file thực tế lên đây sẽ có hướng giải quyết.
Em xin phép mượn file của bạn 1convit789.
Em muốn không hiện các sheet cụ thể là sheet1, sheet2, sheet3 (thực tế tên sheet không có điểm chung) và các sheet còn lại vẫn hiện trong dropdown.
Khi kích hoạt bất kỳ sheet nào thì dropdown chuyển sang tên sheet đó.

1597827635390.png
 

File đính kèm

  • Book1.xlsm
    21.7 KB · Đọc: 7
Upvote 0
Em xin phép mượn file của bạn 1convit789.
Em muốn không hiện các sheet cụ thể là sheet1, sheet2, sheet3 (thực tế tên sheet không có điểm chung) và các sheet còn lại vẫn hiện trong dropdown.
Khi kích hoạt bất kỳ sheet nào thì dropdown chuyển sang tên sheet đó.

Bạn lười thì tôi cũng lười, lờ nói giúp rồi nên giúp lần này thôi.
thay code trong Module thành thế này và sửa một chút file customUI14.xml
Mã:
Option Explicit
Public RibbonUI As IRibbonUI
'Private mwkbNavigation As Workbook
'Callback for customUI.onLoad
Sub RibbonUI_onload(ribbon As IRibbonUI)
Set RibbonUI = ribbon
End Sub

'Callback for SelectSheet onAction
Sub Selectsheet_click(control As IRibbonControl, id As String, index As Integer)
    If ThisWorkbook.Sheets(index + 1).Visible = xlSheetVisible Then ThisWorkbook.Sheets(index + 4).Select
End Sub

'Callback for SelectSheet getItemCount
Sub SelectSheet_getItemCount(control As IRibbonControl, ByRef returnedVal)
    returnedVal = ThisWorkbook.Worksheets.Count - 3
End Sub

'Callback for SelectSheet getItemLabel
Sub SelectSheet_getItemLabel(control As IRibbonControl, index As Integer, ByRef returnedVal)
        returnedVal = ThisWorkbook.Worksheets(index + 4).Name
End Sub

'Callback for SelectSheet getItemLabel
Sub SelectSheet_getItemId(control As IRibbonControl, index As Integer, ByRef id)
    id = "SelectSheet" & index
End Sub
Sub GetSelectedItemIndexDropDown(control As IRibbonControl, ByRef index)
    index = ActiveSheet.index - 4
End Sub
Code này không áp dụng được cho file thực tế của bạn, bạn tự biến hóa vậy.
 

File đính kèm

  • Ribbon-DropDown.xlsm
    22.8 KB · Đọc: 14
Lần chỉnh sửa cuối:
Upvote 0
Mọi người ai biết chỉ e với.. E đang học chương 18 : Ribbon; mục xây dựng điều khiển dropDown
Khi e dùng CUE để copy callback thì Thủ tục "SelectSheet_getItemId" không xuất hiện trong mục General callback để copy vào VBA ạ?. Không biết có phải do lỗi này không mà file của e không hiện tên sheet trong DropDown Chọn Sheet đc.
Sách nào vậy bạn. Cho ké với
 
Upvote 0
Web KT
Back
Top Bottom