Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3493|回复: 13

[VBA第3期答案]工具栏练习题答案

[复制链接]
发表于 2007-11-19 10:33 | 显示全部楼层 |阅读模式
<p><font size="3">工具栏的最终目的是要达到附加题的要求,所以,直接给出答案。</font></p><p><font size="3"></font>&nbsp;</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/>&nbsp;&nbsp;&nbsp; Set ExcelApp.xlApp = Application<br/>&nbsp;&nbsp;&nbsp; Call CreateProtectBar<br/>End Sub</font></p><p><font size="3">rivate Sub Workbook_BeforeClose(Cancel As Boolean)<br/>&nbsp;&nbsp;&nbsp; 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">&nbsp;&nbsp;&nbsp; Call DeleteProtectBar</font></p><p><font size="3">&nbsp;&nbsp;&nbsp; Set cBarMenu = Application.CommandBars.Add("主菜单", msoBarTop, , True)<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; With cBarMenu<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Visible = True<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set myCtl = .Controls.Add(msoControlPopup, , , , True)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; With myCtl<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Caption = "工作表保护"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set subCtl = .Controls.Add(msoControlButton)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; With subCtl<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Caption = "保护当前工作表"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .FaceId = 893<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .OnAction = "rotectSheet"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End With<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End With<br/>&nbsp;&nbsp;&nbsp; End With<br/>&nbsp;<br/>End Sub</font></p><p><font size="3">Sub ProtectSheet()<br/>&nbsp;&nbsp;&nbsp; With subCtl<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Caption = IIf(.Caption = "保护当前工作表", "解除保护当前工作表", "保护当前工作表")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .FaceId = IIf(.FaceId = 893, 277, 893)<br/>&nbsp;&nbsp;&nbsp; End With<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; With ActiveSheet<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If subCtl.Caption = "解除保护当前工作表" Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Protect<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Unprotect<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp; End With<br/>&nbsp;&nbsp;&nbsp; <br/>End Sub</font></p><p><font size="3">Sub DeleteProtectBar()<br/>&nbsp;&nbsp;&nbsp; On Error Resume Next<br/>&nbsp;&nbsp;&nbsp; Application.CommandBars("主菜单").Delete<br/>&nbsp;&nbsp;&nbsp; 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/>&nbsp;&nbsp;&nbsp; With subCtl<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Caption = IIf(Sh.ProtectContents = False, "保护当前工作表", "解除保护当前工作表")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .FaceId = IIf(Sh.ProtectContents = False, 893, 277)<br/>&nbsp;&nbsp;&nbsp; End With<br/>End Sub</font></p><p><font size="3">rivate Sub xlApp_WorkbookActivate(ByVal Wb As Workbook)<br/>&nbsp;&nbsp;&nbsp; With subCtl<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Caption = IIf(Wb.ActiveSheet.ProtectContents = False, "保护当前工作表", "解除保护当前工作表")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .FaceId = IIf(Wb.ActiveSheet.ProtectContents = False, 893, 277)<br/>&nbsp;&nbsp;&nbsp; End With<br/>End Sub<br/>'========================End==========================</font></p><p><font size="3"><br/></font></p>
[此贴子已经被作者于2007-11-19 10:51:55编辑过]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2007-11-19 10:50 | 显示全部楼层
回复

使用道具 举报

发表于 2007-11-19 11:10 | 显示全部楼层
回复

使用道具 举报

发表于 2007-11-19 11:16 | 显示全部楼层

公布答案了?谢谢,努力学习中....
回复

使用道具 举报

发表于 2007-11-19 11:36 | 显示全部楼层

<p>好好消化理解中!</p><p>谢谢老师!</p>
回复

使用道具 举报

发表于 2007-11-19 12:13 | 显示全部楼层

<p>好多都看不懂</p><p>&nbsp;&nbsp; 要加强学习了 </p>
回复

使用道具 举报

发表于 2007-11-19 12:27 | 显示全部楼层

呵呵,老师被我问得烦了,干脆把答案拿出来了!
回复

使用道具 举报

发表于 2007-11-19 12:43 | 显示全部楼层

类这个东东一直没搞懂,不知道怎么用,不过还是要谢谢老师,一定好好学习!
回复

使用道具 举报

 楼主| 发表于 2007-11-19 14:29 | 显示全部楼层

尽量理解,周五晚再讲解讲解
回复

使用道具 举报

发表于 2007-11-19 20:58 | 显示全部楼层

CommandBar 和 Office.CommandBar 以及 Application 和 Excel.Application 分别有什么区别啊<br/>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-4 07:59 , Processed in 0.309845 second(s), 4 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表