Vô hiệu một số mục trong Menu và Option của Excel.

Liên hệ QC

sealand

Thành viên gạo cội
Tham gia
16/5/08
Bài viết
4,884
Được thích
7,687
Giới tính
Nam
Nghề nghiệp
Kế Toán
Mình đang tìm cách dùng VBA để vô hiệu hay kích hoạt một số mục trong Menu và Dialog Option giống như Enabled và Unabled trên Form nhưng vẫn không được.
Nhờ các bạn giúp mình sử lý với. Thank.
 
Không phải A Dom à, mình chỉ muốn nó mờ đi và không có tác dụng nữa. Khi cần mình vẫn có thể hoàn nguyên chức năng cho nó.
 
Upvote 0
Upvote 0
Cám ơn các bạn lưu tâm, nhưng nếu cho mất cả 1 Menu như vậy thì lại không làm được việc khác.
Cụ thể hiện mình đang cần cho các thằng sau chết tạm (1 lúc nào đó mình vẫn dựng nó dậy được, giống menu Data trong hình của A Dom):
1/Save as, Save
2/Trong dialog Option: Gridline, Row&column headers,Sheet Tabs

Nhưng mình lại không muốn mất toàn bộ menu file
 
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn các bạn lưu tâm, nhưng nếu cho mất cả 1 Menu như vậy thì lại không làm được việc khác.
Cụ thể hiện mình đang cần cho các thằng sau chết tạm (1 lúc nào đó mình vẫn dựng nó dậy được, giống menu Data trong hình của A Dom):
1/Save as, Save
2/Trong dialog Option: Gridline, Row&column headers,Sheet Tabs

Nhưng mình lại không muốn mất toàn bộ menu file

Câu 1:

Anh thử code sau:

Mã:
Sub An()
With Application.CommandBars("File")
   .FindControl(ID:=3).Enabled = False
   .FindControl(ID:=748).Enabled = False
End With

End Sub
Sub Hien()
With Application.CommandBars("File")
   .FindControl(ID:=3).Enabled = True
   .FindControl(ID:=748).Enabled = True
End With

End Sub
Câu 2: Câu này khó ăn đây, có cách là anh tắt luôn cái Options luôn thì được.
 
Upvote 0
Cám ơn A Dom, câu 1 coi như hoàn hảo. Câu 2 trước mắt mình cũng đành theo đề xuất của Dom, chấp nhận mất 1 số thứ
 
Upvote 0
Câu 1:

Anh thử code sau:

Mã:
Sub An()
With Application.CommandBars("File")
   .FindControl(ID:=3).Enabled = False
   .FindControl(ID:=748).Enabled = False
End With

End Sub
Sub Hien()
With Application.CommandBars("File")
   .FindControl(ID:=3).Enabled = True
   .FindControl(ID:=748).Enabled = True
End With

End Sub
Câu 2: Câu này khó ăn đây, có cách là anh tắt luôn cái Options luôn thì được.
Các Bác cho em hỏi là làm thế nào mà biết được ID:=3 hayID:=748? và những menu khác là bao nhiêu?
Cảm ơn các bác
 
Upvote 0
Các Bác cho em hỏi là làm thế nào mà biết được ID:=3 hayID:=748? và những menu khác là bao nhiêu?
Cảm ơn các bác
Bạn chạy code sau nhé:

Mã:
Sub GetID()
   Dim cbCtl As CommandBarControl
   Dim cbBar As CommandBar
   Dim i As Integer

   On Error Resume Next
   Application.ScreenUpdating = False
   Cells(1, 1).Value = "CommandBar"
   Cells(1, 2).Value = "Control"
   Cells(1, 3).Value = "FaceID"
   Cells(1, 4).Value = "ID"
   i = 2
   For Each cbBar In CommandBars
      Application.StatusBar = "Processing Bar " & cbBar.Name
      If cbBar.Type = msoBarTypePopup Then
         Cells(i, 1).Value = cbBar.Name
         i = i + 1
         For Each cbCtl In cbBar.Controls
            Cells(i, 2).Value = cbCtl.Caption
            cbCtl.CopyFace
            If Err.Number = 0 Then
               ActiveSheet.Paste Cells(i, 3)
               Cells(i, 3).Value = cbCtl.FaceId
            End If
            Cells(i, 4).Value = cbCtl.ID
            Err.Clear
            i = i + 1
         Next cbCtl
      End If
   Next cbBar
   Range("A:B").EntireColumn.AutoFit
   Application.StatusBar = False
End Sub
 
Upvote 0
Bạn chạy code sau nhé:

Mã:
Sub GetID()
   Dim cbCtl As CommandBarControl
   Dim cbBar As CommandBar
   Dim i As Integer

   On Error Resume Next
   Application.ScreenUpdating = False
   Cells(1, 1).Value = "CommandBar"
   Cells(1, 2).Value = "Control"
   Cells(1, 3).Value = "FaceID"
   Cells(1, 4).Value = "ID"
   i = 2
   For Each cbBar In CommandBars
      Application.StatusBar = "Processing Bar " & cbBar.Name
      If cbBar.Type = msoBarTypePopup Then
         Cells(i, 1).Value = cbBar.Name
         i = i + 1
         For Each cbCtl In cbBar.Controls
            Cells(i, 2).Value = cbCtl.Caption
            cbCtl.CopyFace
            If Err.Number = 0 Then
               ActiveSheet.Paste Cells(i, 3)
               Cells(i, 3).Value = cbCtl.FaceId
            End If
            Cells(i, 4).Value = cbCtl.ID
            Err.Clear
            i = i + 1
         Next cbCtl
      End If
   Next cbBar
   Range("A:B").EntireColumn.AutoFit
   Application.StatusBar = False
End Sub
Bạn cho mình hỏi thêm chút nhé!
Bạn có thể cho mình biết là tất cả những ID này được lưu trong file nào của office vậy?
 
Upvote 0
Bạn cho mình hỏi thêm chút nhé!
Bạn có thể cho mình biết là tất cả những ID này được lưu trong file nào của office vậy?

Chắc là lưu trong mấy file DLL gì gì đó ---> Dù bạn có biết nó là file nào thì bạn cũng chẳng làm được gì (mã nguồn đóng mà)
 
Upvote 0
Chắc là lưu trong mấy file DLL gì gì đó ---> Dù bạn có biết nó là file nào thì bạn cũng chẳng làm được gì (mã nguồn đóng mà)
Cảm ơn anh! Tôi chỉ hỏi để biết thôi chứ còn đối với trình độ của tôi không thể thây đổi được gì.
Tôi không biết nên tôi hay tò mò thôi mà.
 
Upvote 0
Web KT
Back
Top Bottom