返回列表 上一主題 發帖

[發問] 兩個工作表的 commandbar

[發問] 兩個工作表的 commandbar

我有自製工具列,但是當我開啟兩個檔案,要關閉其中一個檔案時,兩個檔案的commandbar都會被刪掉,要怎樣才能關掉一個檔案時,還能保留工作列?????????
擷取.JPG
2019-7-24 16:54

測試.rar (141.36 KB)

回復 1# s13030029
Thisworkbook 程式碼
  1. '自訂工具列
  2.     Dim Abar As CommandBar    '宣告工具列物件

  3. Private Sub Workbook_Open()
  4.     C = MsgBox("功能選單在上方工具列的「增益集」裡!!!", vbExclamation, "使用方法")
  5.     For Each Abar In Application.CommandBars
  6.         If Not Abar.BuiltIn Then Abar.Delete
  7.     Next

  8.     '宣告工具列按鈕物件
  9.     Dim myButton1 As CommandBarButton  '選擇使用說明
  10.     Dim myButton2 As CommandBarButton  '選擇管制計畫表
  11.    
  12.    '新增一個工具列
  13.     Set Abar = Application.CommandBars.Add(Name:="畫面選擇")
  14. With Abar
  15. '畫面選擇----------------------------------------------
  16.         '使用說明
  17.         Set myButton1 = .Controls.Add(msoControlButton)
  18.         With myButton1
  19.             .Style = msoButtonIconAndCaption '同時顯示文字和小圖示
  20.             .BeginGroup = True
  21.             .Caption = "使用說明"            '顯示在工具列上的按鈕文字
  22.             '.TooltipText = "畫面選擇"        '滑鼠移過去時,所顯示的提示文字
  23.             .FaceId = 487                    '小圖示
  24.             .Tag = "MyCustomTag"
  25.            .OnAction = "選擇使用說明"        '設定按下此鍵時所要執行的巨集
  26.         End With
  27.         '管制計畫表
  28.         Set myButton2 = .Controls.Add(msoControlButton)
  29.         With myButton2
  30.             .Style = msoButtonIconAndCaption '同時顯示文字和小圖示
  31.             .BeginGroup = True
  32.             .Caption = "管制計畫表"          '顯示在工具列上的按鈕文字
  33.             '.TooltipText = "畫面選擇"        '滑鼠移過去時,所顯示的提示文字
  34.             .FaceId = 69                     '小圖示
  35.             .Tag = "MyCustomTag"
  36.            .OnAction = "選擇管制計畫表"      '設定按下此鍵時所要執行的巨集
  37.         End With
  38.         .Position = msoBarTop                '工具列擺放在上層
  39.         .Visible = True
  40. End With
  41. End Sub

  42. Private Sub Workbook_BeforeClose(Cancel As Boolean)
  43.     Dim Abar As CommandBar
  44.     For Each Abar In Application.CommandBars
  45.         If Not Abar.BuiltIn Then Abar.Delete
  46.     Next
  47. End Sub
複製代碼

TOP

Private Sub Workbook_BeforeClose(Cancel As Boolean)
   
        If Excel.Application.Workbooks.Count = 1 Then
        Dim Abar As CommandBar
        For Each Abar In Application.CommandBars
            If Not Abar.BuiltIn Then Abar.Delete
        Next
        End If
        
    End Sub

TOP

回復 3# jackyq
原來如此~瞭解了~謝謝~~

TOP

回復 3# jackyq

大大妳好~
我有遇到一個問題,就是現在我有兩檔案,但是是不一樣的commandbar,我先打開一個後,再打開第二個時,第二個的commandbar會蓋掉第一個的commandbar,該怎麼辦@@

TOP

本帖最後由 jackyq 於 2019-8-6 15:56 編輯

Private Sub Workbook_Open()

'    For Each Abar In Application.CommandBars
'         If Not Abar.BuiltIn Then Abar.Delete
'     Next

    '宣告工具列按鈕物件
    Dim myButton1 As CommandBarButton  '選擇使用說明
    Dim myButton2 As CommandBarButton  '選擇管制計畫表
   
   '新增一個工具列
    on error resume next
    Set Abar = Application.CommandBars.Add(Name:="畫面選擇")
   if err then exit sub
    on error goto 0
    C = MsgBox("功能選單在上方工具列的「增益集」裡!!!", vbExclamation, "使用方法")

With Abar
'畫面選擇----------------------------------------------
        '使用說明
        Set myButton1 = .Controls.Add(msoControlButton)
        With myButton1
            .Style = msoButtonIconAndCaption '同時顯示文字和小圖示
            .BeginGroup =

.................................................

TOP

回復 6# jackyq [
謝謝大大~~
這樣的方法是可以用
就是同時顯示
但是還要想想要如何避免使用者去按到不是該檔案的工具列才行@@
畢竟巨集用的不一樣...Orz

TOP

'自訂工具列
Dim Abar As CommandBar    '宣告工具列物件
Dim 已提示 As Boolean


Private Sub Workbook_Open()
    If 已提示 = False Then
       已提示 = True
       C = MsgBox("功能選單在上方工具列的「增益集」裡!!!", vbExclamation, "使用方法")
    End If

    For Each Abar In Application.CommandBars
        If Not Abar.BuiltIn Then Abar.Delete
    Next

    '宣告工具列按鈕物件
    Dim myButton1 As CommandBarButton  '選擇使用說明
    Dim myButton2 As CommandBarButton  '選擇管制計畫表
   
   '新增一個工具列
    Set Abar = Application.CommandBars.Add(Name:="畫面選擇")
With Abar
'畫面選擇----------------------------------------------
        '使用說明
        Set myButton1 = .Controls.Add(msoControlButton)
        With myButton1
            .Style = msoButtonIconAndCaption '同時顯示文字和小圖示
            .BeginGroup = True
            .Caption = "使用說明"            '顯示在工具列上的按鈕文字
            '.TooltipText = "畫面選擇"        '滑鼠移過去時,所顯示的提示文字
            .FaceId = 487                    '小圖示
            .Tag = "MyCustomTag"
           .OnAction = "選擇使用說明"        '設定按下此鍵時所要執行的巨集
        End With
        '管制計畫表
        Set myButton2 = .Controls.Add(msoControlButton)
        With myButton2
            .Style = msoButtonIconAndCaption '同時顯示文字和小圖示
            .BeginGroup = True
            .Caption = "管制計畫表"          '顯示在工具列上的按鈕文字
            '.TooltipText = "畫面選擇"        '滑鼠移過去時,所顯示的提示文字
            .FaceId = 69                     '小圖示
            .Tag = "MyCustomTag"
           .OnAction = "選擇管制計畫表"      '設定按下此鍵時所要執行的巨集
        End With
        .Position = msoBarTop                '工具列擺放在上層
        .Visible = True
End With
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim Abar As CommandBar
    For Each Abar In Application.CommandBars
        If Not Abar.BuiltIn Then Abar.Delete
    Next
End Sub

Private Sub Workbook_WindowActivate(ByVal Wn As Window)
Workbook_Open
End Sub

TOP

回復 8# jackyq
謝謝大大~這是我要的~~
不過我想請問下面這段是什麼樣的用法???
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
Workbook_Open
End Sub

是當視窗活動時再執行一次Workbook_Open嗎?

TOP

回復 9# s13030029


視窗從 非活動 變成 活動 的那一霎那

再執行一次Workbook_Open

TOP

        靜思自在 : 【時間無法遮擋】怕時間消逝,花了許多心血,想盡各式方法要遮擋時間,結果是:浪費了更多時間,且一無所成!
返回列表 上一主題