Skip to content.

Sections
Personal tools
You are here: Home » コミュニティ » masarl memorial » homepage3.nifty.com » masarl » article » excel-decorator » AppDecorator.txt

AppDecorator.txt

Document Actions

VERSION 1.0 CLASS BEGIN MultiUse = -1 'True END Attribute VB_Name = "AppDecorator" Attribute VB_Creatable = True Attribute VB_PredeclaredId = False Attribute VB_Exposed = False Option Explicit

Public BookDecorators As New Collection Public ActiveBookDecorator As BookDecorator

Public WithEvents Target As Application

Const MenuID As String = "DecoratorMenuID" Public Menu As CommandBarPopup

Private Sub AddBookDecorator(aWorkbook As Workbook) Dim aBookDecorator As New BookDecorator aBookDecorator.Initialize aWorkbook, Me BookDecorators.Add aBookDecorator End Sub

Private Sub RemoveBookDecorator(aWorkbook As Workbook) Dim i As Integer With BookDecorators For i = 1 To .Count If .Item(i).Target Is aWorkbook Then .Remove i Exit For End If Next i End With End Sub

Private Sub Class_Terminate() CleanupMenus Set BookDecorators = Nothing End Sub

Private Sub Target_WorkbookBeforeClose(ByVal Wb As Excel.Workbook, Cancel As Boolean) RemoveBookDecorator Wb End Sub

Public Sub Initialize() Set Target = Application SetupMenus End Sub

Public Sub NewBook() Dim aWorkbook As Workbook Set aWorkbook = Target.Workbooks.Add AddBookDecorator aWorkbook End Sub

Public Sub ShowBookDecoratorCount() MsgBox "ブックの数は" & CStr(BookDecorators.Count) & "です" End Sub

Private Sub SetupMenus() CleanupMenus Set Menu = Target.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup, _ Temporary:=True) With Menu .Caption = "&DecoratorModel" .Tag = MenuID End With With Menu.Controls.Add(Type:=msoControlButton) .Caption = "ブックの新規作成" .OnAction = "AppDecoratorClass.NewBook" End With With Menu.Controls.Add(Type:=msoControlButton) .Caption = "ブックの数..." .OnAction = "AppDecoratorClass.ShowBookDecoratorCount" End With End Sub

Private Sub CleanupMenus() Dim aMenu As CommandBarPopup Set aMenu = Target.CommandBars("Worksheet Menu Bar").FindControl(Type:=msoControlPopup, _ Tag:=MenuID) If Not aMenu Is Nothing Then aMenu.Delete Set Menu = Nothing End If End Sub