Ẩn/hiện thanh công cụ (1 người xem)

  • Thread starter Thread starter nncb2008
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

nncb2008

Thành viên chính thức
Tham gia
14/2/08
Bài viết
88
Được thích
3
Chào các bác.
Em có 1 worbook, nay em muốn khi nó Active thì tất cả các thanh công cụ và hệ thống menu bị ẩn, khi nó Deactive thì trả lại nguyên dạng.
Các bác giúp em nhé. Cảm ơn các bác nhiều.
 
Hide/Show menu và ToolBar

Bạn thêm macro này vào
Mã:
Sub RemoveToolbars()
    On Error Resume Next
        With Application
           .DisplayFullScreen = True
           .CommandBars("Full Screen").Visible = False
           .CommandBars("Worksheet Menu Bar").Enabled = False
        End With
    On Error GoTo 0
End Sub
Sub RestoreToolbars()
    On Error Resume Next
        With Application
           .DisplayFullScreen = False
           .CommandBars("Worksheet Menu Bar").Enabled = True
        End With
    On Error GoTo 0
End Sub

Private Sub Workbook_Activate()
    RemoveToolbars
End Sub

Private Sub Workbook_Deactivate()
    RestoreToolbars
End Sub
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Cảm ơn tqhung65.
Em chỉ muốn ẩn thanh công cụ của Excel, còn thanh công cụ của em vẫn còn. Các bác giúp em nhé.
 
Upvote 0
Bạn thêm các dòng màu xanh vào nha, trong đó "MyToolbar" là của bạn.

Sub RemoveToolbars()
On Error Resume Next
With Application
.DisplayFullScreen = True
.CommandBars("Full Screen").Visible = False
.CommandBars("Worksheet Menu Bar").Enabled = False
.CommandBars("MyToolbar").Enabled = True
.CommandBars("MyToolbar").Visible = True
End With
On Error GoTo 0
End Sub

Sub RestoreToolbars()
On Error Resume Next
With Application
.DisplayFullScreen = False
.CommandBars("Worksheet Menu Bar").Enabled = True
.CommandBars("MyToolbar").Enabled = False
End With
On Error GoTo 0
End Sub

Private Sub Workbook_Activate()
RemoveToolbars
End Sub

Private Sub Workbook_Deactivate()
RestoreToolbars
End Sub
 
Upvote 0
Các bác ơi, sau khi thực hiện các đoạn code trên thì chỉ có menu bị ẩn còn các thanh công cụ vẫn hiện hữu, sau đó Excel của em bị mất dòng title, cứ phải restore.
 
Lần chỉnh sửa cuối:
Upvote 0
Ẩn Command bars và controls ở Excel 97-2003

Nhân tiện đây cho mình "ké" chút xíu.

Ẩn Command bars và controls ở Excel 97-2003

Lưu ý: Tất cả những ví dụ cho trang này đều là ẩn commandbar/toolbar/control (False).
Nếu như bạn muốn thay đổi từ ẩn sang hiện thì bạn đổi False Thành True.

Làm sao để ẩn Command bar
Đây là đoạn code để ẩn Worksheet Menu Bar
PHP:
Application.CommandBars("Worksheet Menu Bar").Enabled = False
Đây là đoạn code để ẩn Standard toolbar
PHP:
Application.CommandBars("Standard").Enabled = False
Đây là đoạn code để ẩn Cell menu (Khi chúng ta nhấn chuột phải ở 1 cell nào đó)
PHP:
Application.CommandBars("Cell").Enabled = False
Lưu Ý: Điều quan trọng là bạn phải luôn sử dụng tiếng Anh trên thanh Command bar ở trong code.
Nếu bạn sử dụng tên hiện thời thì nó sẽ không hoạt động.
Nếu bạn không biết tiếng Anh thì bạn có thể chạy đoạn code sau, nó sẽ tự động liệt kê tên bằng tiếng hiện thời office bạn đang sử dụng và tiếng Anh bằng 1 sheet khác.
PHP:
Sub Get_Commandbars_Names()
    Dim Cbar As CommandBar
    Dim NewWS As Worksheet
    Dim RNum As Long
    RNum = 1
    Set NewWS = Worksheets.Add
    On Error Resume Next
    ActiveSheet.Name = "CommandBarNames"
    On Error GoTo 0
    For Each Cbar In Application.CommandBars
        NewWS.Cells(RNum, "A").Value = Cbar.Name
        NewWS.Cells(RNum, "B").Value = Cbar.NameLocal
        RNum = RNum + 1
    Next Cbar
    NewWS.Columns.AutoFit
End Sub
Làm sao để ẩn tất cả Command bars
Nếu bạn muốn khôi phục lại chúng sau khi chạy đoạn code sau thì thay False = True
PHP:
Sub Disable_Command_Bars_1()
'This will disable all Command bars
    Dim Cbar As CommandBar
    For Each Cbar In Application.CommandBars
        Cbar.Enabled = False
    Next
End Sub
Làm sao để ẩn 1 Menu hay 1 control
Ẩn menu trên Worksheet Menu Bar
Cả 2 ví dụ sau sẽ ẩn trình đơn “File” ở Worksheet Menu Bar
1) Sử dụng tên của command bar control
menubar1.jpg

PHP:
Application.CommandBars("Worksheet Menu Bar").Controls("File").Enabled = False
Nhưng trường hợp này nó sẽ không chạy nếu như bạn sử dụng Office không phải là phiên bản tiến Anh
2) Sử dụng số ID của command bar control ( Nó chạy cho tất cả các ngôn ngữ )
menubar2.jpg

PHP:
Application.CommandBars("Worksheet Menu Bar").FindControl(ID:=30002).Enabled = False
Ví dụ trên chỉ ẩn 1 trình đơn “File” tương ứng mã 30002
Ẩn 1 control
Đây là code ẩn View - Full Screen ở Worksheet Menu Bar
PHP:
Application.CommandBars("Worksheet Menu Bar").FindControl _
(ID:=178, Recursive:=True).Enabled = False
Đây là ví dụ sẽ ẩn "Copy" ở thanh Standard Toolbar
PHP:
Application.CommandBars("Standard").FindControl(ID:=19).Enabled = False
Và ví dụ dưới đây sẽ ẩn tòan bộ chức năng "Copy" .
Note: Tất cả chức năng "Copy" ở thanh Menu Bar, Toolbars và khi click chuột phải.
Nếu bạn sử dụng Excel 2000-2003 bạn có thể dung code sau:
PHP:
Sub MenuControl_False()
' Excel 2000 - 2003
    Dim Ctrl As Office.CommandBarControl
    For Each Ctrl In Application.CommandBars.FindControls(ID:=19)
        Ctrl.Enabled = False
    Next Ctrl
End Sub
Nếu sử dụng Excel 97 thì dung code này (Nó cũng chạy được cả phiên bản 2000-2003)
PHP:
Sub MenuControl_Enabled_False()
' Excel 97 - 2003
    Dim Ctl As CommandBarControl
    Dim Cbar As Integer
    On Error Resume Next
    For Cbar = 1 To Application.CommandBars.Count
        For Each Ctl In Application.CommandBars(Cbar).Controls
            Application.CommandBars(Cbar).FindControl(ID:=19, _
                            Recursive:=True).Enabled = False
        Next Ctl
    Next Cbar
    On Error GoTo 0
End Sub
 
Upvote 0
Mời các bạn tham khảo các mã số Menu Bar Excel 2003 như sau:

menubar1.jpg


menubar2.jpg


File.png


Edit.png


View.png


Insert.png


Format.png


Tools.png


Data.png


Window.png
 
Upvote 0
Help.png


Một số ví dụ hữu dụng khác
1) Làm thế nào để chạy tự động 1 code khi bạn di chuyển qua lại giữa các Worksheet, đóng mở file
PHP:
Private Sub Workbook_Activate()
'Tên macro của bạn
End Sub
Private Sub Workbook_Deactivate()
'Tên macro của bạn 
End Sub
Hay sử dụng 2 sự kiện sau:
PHP:
Private Sub Workbook_Open()
'Tên macro của bạn 
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Tên macro của bạn 
End Sub
2) Ẩn thanh FormulaBar và StatusBar
PHP:
Application.DisplayFormulaBar = False
Application.DisplayStatusBar = False
3) Vô hiệu hóa phím nóng
Bạn có thể sử dụng Application.OnKey để làm điều đó.
Để biết them thong tin bạn nên tham khảo VBA help.
Ví dụ ẩn tổ hợp phím Ctrl+C (Cho chức năng Copy)
PHP:
Application.OnKey "^c", ""
Để mở lại bạn dung:
PHP:
Application.OnKey "^c"
4) Khác
Vô hiệu hóa right click trên thenh worksheet menu .
PHP:
On Error Resume Next
Application.CommandBars("Toolbar List").Enabled = False
On Error GoTo 0
Sự kiện này ngăn chặn người sử dụng double-clicking ở vùng Toolbar để mở nó.
(Customize Toolbars) ở Excel 2002 và ở trên
PHP:
Application.CommandBars.DisableCustomize = True
Nếu bạn muốn lọai bỏ “Type a question for Help” ở thanh Worksheet Menu bạn có thể sử dụng nó ở Excel 2002 như trên. True = ẩn và False = hiện
PHP:
Application.CommandBars.DisableAskAQuestionDropdown = True
Bạn có thể dung code này để tránh gây ra lổi ở Excel 2000
PHP:
If Val(Application.Version) > 9 Then
    CallByName CommandBars, "DisableCustomize", VbLet, True
    CallByName CommandBars, "DisableAskAQuestionDropdown", VbLet, True
End If
5) Reset lại commandbar
PHP:
Application.CommandBars("Worksheet Menu Bar").Reset
 
Upvote 0
To dofoowear
Bài viết của bạn rất hay, tỉ mỉ giúp nhiều cho những bạn như tôi muốn học hỏi về VBA.Nhân tiện đây tôi muốn cách nào để biết các Mã số Menu Bar của 2003 khi cần , chứ nhìn Mã của bạn kiếm ra để học thuộc ...chắc mệt xỉu ( ý tôi là khi cần Mã nào thì mình biết cách kiếm ra nó ).
Cảm ơn bạn
Chào
 
Upvote 0
To dofoowear
Bài viết của bạn rất hay, tỉ mỉ giúp nhiều cho những bạn như tôi muốn học hỏi về VBA.Nhân tiện đây tôi muốn cách nào để biết các Mã số Menu Bar của 2003 khi cần , chứ nhìn Mã của bạn kiếm ra để học thuộc ...chắc mệt xỉu ( ý tôi là khi cần Mã nào thì mình biết cách kiếm ra nó ).
Cảm ơn bạn
Chào
Thì chạy code thí nghiệm là biết liền!
Ví dụ bạn muốn biết các ID của Sub Menu có trong menu File, dùng code này:
PHP:
Sub Test()
  Dim Bar As CommandBarControl, i As Long
  For Each Bar In Application.CommandBars("File").Controls
    i = i + 1
    Cells(i, 1) = Bar.Caption
    Cells(i, 2) = Bar.ID
  Next Bar
End Sub
Code sẽ liệt kê ra: Cột A là tên, cột B là ID
Bạn thử xem!
 
Upvote 0
Thì chạy code thí nghiệm là biết liền!
Ví dụ bạn muốn biết các ID của Sub Menu có trong menu File, dùng code này:
PHP:
Sub Test()
  Dim Bar As CommandBarControl, i As Long
  For Each Bar In Application.CommandBars("File").Controls
    i = i + 1
    Cells(i, 1) = Bar.Caption
    Cells(i, 2) = Bar.ID
  Next Bar
End Sub
Code sẽ liệt kê ra: Cột A là tên, cột B là ID
Bạn thử xem!
Tôi nghỉ khỏi cần phải thử, vì bạn " là bậc thầy cúa GPE " chắc chắc sẽ đúng 101 % rồi.
Cảm ơn bạn
 
Upvote 0
To dofoowear
Bài viết của bạn rất hay, tỉ mỉ giúp nhiều cho những bạn như tôi muốn học hỏi về VBA.Nhân tiện đây tôi muốn cách nào để biết các Mã số Menu Bar của 2003 khi cần , chứ nhìn Mã của bạn kiếm ra để học thuộc ...chắc mệt xỉu ( ý tôi là khi cần Mã nào thì mình biết cách kiếm ra nó ).
Cảm ơn bạn
Chào
Nếu rãnh bạn vào trang sau:

http://www.erlandsendata.no/english/index.php?d=endownloadcommandbars

Tham khảo và tải ví dụ về từ từ nghiên cứu nhé
Thân
 
Upvote 0
Tôi nghỉ khỏi cần phải thử, vì bạn " là bậc thầy cúa GPE " chắc chắc sẽ đúng 101 % rồi.
Cảm ơn bạn
Bạn ơi! Xin đừng nói thế mà mất tình đoàn kết! Trên GPE này có thiếu gì SƯ PHỤ, trong khi tôi chỉ là lính mới tò te.. là hạt cát.. không dám xưng là thầy của ai cả (vì thực chất tôi cũng đang học hỏi từ các bậc đàn anh)
 
Upvote 0
Nếu thế thì mình phải sửa lại thôi " là một trong những bậc thầy cúa GPE ".Bạn khiêm tốn thật đấy .
Cảm ơn các bạn nhiều
 
Upvote 0
Chào các bác.
Em có 1 worbook, nay em muốn khi nó Active thì tất cả các thanh công cụ và hệ thống menu bị ẩn, khi nó Deactive thì trả lại nguyên dạng.
Đây là 1 cách
Mã:
Option Explicit
Private Sub Workbook_Activate()
    cmb False
End Sub
Private Sub Workbook_Deactivate()
    cmb True
End Sub
Private Sub cmb(gia_tri As Boolean)
    Dim tbar As CommandBar
    For Each tbar In Application.CommandBars
        tbar.Enabled = gia_tri
    Next
End Sub
 
Upvote 0
Cảm ơn các bác đã quan tâm giúp đỡ.
Từ code của các bác em làm ra file đính kèm. Khi sheet "Hide" mà Active thì ẩn thanh công cụ và menu, khi nó Deactive thì hiện trở lại. Em chạy thấy rất "nuột" trên Excel2003, không hiểu trên Excel2007 (or more) thì thế nào nhỉ, ẩn hệ thống Ribon chắc khác. Các bác tiếp tục giúp em nhé.
 

File đính kèm

Upvote 0
Cho mình hỏi sử dụng code nào để ẩn tất cả các thanh công cụ, nhưng sau khi thoát thì tự phục hồi lại các thanh đó (Nghĩa là chỉ áp dụng cho file chứa code đó thôi)
 
Upvote 0
Bạn thêm macro này vào
Mã:
Sub RemoveToolbars()
    On Error Resume Next
        With Application
           .DisplayFullScreen = True
           .CommandBars("Full Screen").Visible = False
           .CommandBars("Worksheet Menu Bar").Enabled = False
        End With
    On Error GoTo 0
End Sub
Sub RestoreToolbars()
    On Error Resume Next
        With Application
           .DisplayFullScreen = False
           .CommandBars("Worksheet Menu Bar").Enabled = True
        End With
    On Error GoTo 0
End Sub

Private Sub Workbook_Activate()
    RemoveToolbars
End Sub

Private Sub Workbook_Deactivate()
    RestoreToolbars
End Sub

Chào các bạn
Khi RemoveToolbars thì tôi vẫn muốn hiện thanh Title Bar, thì làm cách nào
----------------------------
P/s : Tôi mày mò cả 01 ngày mà chưa ra
 
Upvote 0
Thì chạy code thí nghiệm là biết liền!
Ví dụ bạn muốn biết các ID của Sub Menu có trong menu File, dùng code này:
PHP:
Sub Test()
  Dim Bar As CommandBarControl, i As Long
  For Each Bar In Application.CommandBars("File").Controls
    i = i + 1
    Cells(i, 1) = Bar.Caption
    Cells(i, 2) = Bar.ID
  Next Bar
End Sub
Code sẽ liệt kê ra: Cột A là tên, cột B là ID
Bạn thử xem!
anh NDU ơi, em thắc mắc là code này có kiểm tra được số ID các thành phần trong filter gồm (auto filter, show all, advanded filter) của Data > Filter > (? auto filter, ? show all, ?advanded filter) không anh?
 
Upvote 0
Chào các anh, chị.
Sưu tầm code trên đây em làm ra file đính kèm với mục đích thiết lập menu riêng, nhưng bí ở chỗ ẩn thanh công cụ hiện thời, khi thoát thì nó lại hiện lại các thanh đó (tình trạng ban đầu). Và thêm nữa muốn hoạt động tương tự trên Excel >2003 thì phải làm thế nào?
Các anh, chị trợ giúp nhé. Cảm ơn nhiều.
 

File đính kèm

Upvote 0

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

Back
Top Bottom