[[20080313170821]] 『ツールメニューからブックをアクティブにしたい』(どないやねん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ツールメニューからブックをアクティブにしたい』(どないやねん)
 ブック名をツールバーに表示して、ツールメニューを選択するとブックをアクティブにしたい。
 作ったのですが、'★ここが駄目 のところがわかりません。
 ★のところに、Windows(WB.Name).Activate を直接書いていますが、マクロ名を書かなくてはいけないらしく。 動作しません。どうしたら良いでしょうか?

 Option Explicit
 Option Base 0
 Public Const MENU_WKSHEET As String = "Worksheet Menu Bar" 'ワークブックデフォルトメニュー
 Public Const APP_TITLE As String = "ブック" 'アプリケーションタイトル
 Public Const BLANK As String = ""  '空白文字列
 Private Const MENU_EXTOOL As String = "ブック(&B)" 'メニュー
 Public Sub Auto_Open()
  Call psInitExTools
 End Sub
 Public Sub Auto_Close()
 On Error Resume Next
  Call MenuBars(xlWorksheet).Reset 'メニューをリセット
 End Sub
 Private Sub psInitExTools() 'ツール初期化
  Call gsOrganizeMenu 'メニューの構成
 End Sub
 Public Sub gsOrganizeMenu() 'メニューの構成を行う
 On Error GoTo ErrorHandler
  Dim barCtrl       As CommandBarControl
  Dim barCtrl_sub   As CommandBarControl
  Dim idx           As Integer
  Dim WB As Workbook
  For Each barCtrl In CommandBars(MENU_WKSHEET).Controls  'メニューの初期化
    If barCtrl.Caption = MENU_EXTOOL Then
      Call barCtrl.Delete
      Exit For
    End If
  Next
  Set barCtrl = CommandBars(MENU_WKSHEET).Controls.Add(Type:=msoControlPopup)
  barCtrl.Caption = MENU_EXTOOL 
 '開いているワークブックを取得する。
 For Each WB In Workbooks
          '個別メニュー作成
          With barCtrl.Controls.Add
            .Caption = WB.Name
            .OnAction = Windows(WB.Name).Activate'★ここが駄目
          End With
 Next
 Exit Sub
 ErrorHandler:
 End Sub

 「ワークシートメニュー」----「ウインドウ」とクリックしてブック名をクリックすれば、

 >ブック名をツールバーに表示して、ツールメニューを選択するとブックをアクティブにしたい。

 とほほ同じ事が可能なんですけどねえ・・・。

途中からですが・・・、

 Public Sub gsOrganizeMenu() 'メニューの構成を行う
    On Error GoTo ErrorHandler
    Dim barCtrl       As CommandBarControl
    Dim barCtrl_sub   As CommandBarControl
    Dim idx           As Integer
    Dim WB As Workbook
    For Each barCtrl In CommandBars(MENU_WKSHEET).Controls  'メニューの初期化
       If barCtrl.Caption = MENU_EXTOOL Then
          Call barCtrl.Delete
          Exit For
          End If
       Next
    Set barCtrl = CommandBars(MENU_WKSHEET).Controls.Add(Type:=msoControlPopup)
    barCtrl.Caption = MENU_EXTOOL
    '開いているワークブックを取得する。
    For Each WB In Workbooks
          '個別メニュー作成
       With barCtrl.Controls.Add
          .Caption = WB.Name
          .OnAction = "book_activate"
          End With
       Next
 Exit Sub
 ErrorHandler:
 End Sub

 Sub book_activate()
   Dim c_inf As Variant
   On Error Resume Next
   If LCase(TypeName(Application.Caller)) = LCase("variant()") Then
      c_inf = Application.Caller
      With Application.CommandBars(MENU_WKSHEET).Controls(c_inf(2) + 1)
         Workbooks(.Controls(c_inf(1)).Caption).Activate
        End With
      End If
 End Sub

これでは?

ichinose


 ichinoseさん有り難う御座いました。
 そうなんですよね。なんでブックが必要なの?ですよね。
 実は、シートの物を作ったのでおそろいでブックも欲しくなったんです。
 どうも有り難う御座いました。(どないやねん) 

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.