<p><font size="3">工具栏的最终目的是要达到附加题的要求,所以,直接给出答案。</font></p><p><font size="3"></font> </p><p><font size="3">'======================ThisWorkBook=======================</font></p><p><font size="3">Option Explicit</font></p><p><font size="3">rivate Sub Workbook_Open()<br/> Set ExcelApp.xlApp = Application<br/> Call CreateProtectBar<br/>End Sub</font></p><p><font size="3">rivate Sub Workbook_BeforeClose(Cancel As Boolean)<br/> Set ExcelApp = Nothing<br/>End Sub<br/>'======================Module(mdlSheetProtect)===============</font></p><p><font size="3">Option Explicit</font></p><p><font size="3">ublic ExcelApp As New clsSheetClass<br/>ublic subCtl As CommandBarButton</font></p><p><font size="3">Dim cBarMenu As Office.CommandBar<br/>Dim myCtl As CommandBarPopup</font></p><p><font size="3">Sub CreateProtectBar()</font></p><p><font size="3"> Call DeleteProtectBar</font></p><p><font size="3"> Set cBarMenu = Application.CommandBars.Add("主菜单", msoBarTop, , True)<br/> <br/> With cBarMenu<br/> .Visible = True<br/> Set myCtl = .Controls.Add(msoControlPopup, , , , True)<br/> With myCtl<br/> .Caption = "工作表保护"<br/> Set subCtl = .Controls.Add(msoControlButton)<br/> With subCtl<br/> .Caption = "保护当前工作表"<br/> .FaceId = 893<br/> .OnAction = "rotectSheet"<br/> End With<br/> End With<br/> End With<br/> <br/>End Sub</font></p><p><font size="3">Sub ProtectSheet()<br/> With subCtl<br/> .Caption = IIf(.Caption = "保护当前工作表", "解除保护当前工作表", "保护当前工作表")<br/> .FaceId = IIf(.FaceId = 893, 277, 893)<br/> End With<br/> <br/> With ActiveSheet<br/> If subCtl.Caption = "解除保护当前工作表" Then<br/> .Protect<br/> Else<br/> .Unprotect<br/> End If<br/> End With<br/> <br/>End Sub</font></p><p><font size="3">Sub DeleteProtectBar()<br/> On Error Resume Next<br/> Application.CommandBars("主菜单").Delete<br/> On Error GoTo 0<br/>End Sub</font></p><p><font size="3">'====================Class(clsSheetClass)===================</font></p><p><font size="3">Option Explicit</font></p><p><font size="3">ublic WithEvents xlApp As Excel.Application</font></p><p><font size="3">rivate Sub xlApp_SheetActivate(ByVal Sh As Object)<br/> With subCtl<br/> .Caption = IIf(Sh.ProtectContents = False, "保护当前工作表", "解除保护当前工作表")<br/> .FaceId = IIf(Sh.ProtectContents = False, 893, 277)<br/> End With<br/>End Sub</font></p><p><font size="3">rivate Sub xlApp_WorkbookActivate(ByVal Wb As Workbook)<br/> With subCtl<br/> .Caption = IIf(Wb.ActiveSheet.ProtectContents = False, "保护当前工作表", "解除保护当前工作表")<br/> .FaceId = IIf(Wb.ActiveSheet.ProtectContents = False, 893, 277)<br/> End With<br/>End Sub<br/>'========================End==========================</font></p><p><font size="3"><br/></font></p>
[此贴子已经被作者于2007-11-19 10:51:55编辑过] |