[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ツールメニューからブックをアクティブにしたい』(どないやねん)
ブック名をツールバーに表示して、ツールメニューを選択するとブックをアクティブにしたい。 作ったのですが、'★ここが駄目 のところがわかりません。 ★のところに、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.