为Excel应用系统制作封面
张建宇
用Excel结合宏语言Visual Basic for
Application 能轻松开发出日常工作所需的小型管理信息系统,
如能再制作一个漂亮的封面一定会使你的应用系统从外观到操作方式上增色不少。本文以笔者编制的“税收收入分析系统”为例,向你介绍为Excel应用系统制作封面的方法。
一、建立封面工作表
打开“税收收入分析系统”工作簿,单击“插入”选单下的“工作表”命令,插入一新的工作表Logo。在新的工作表中添加适当的文字、图形并利用“窗体”工具栏添加一些按钮,然后为按钮指定运行系统其他部分的宏。再单击“工具”选单下的“选项”命令,在“选项”对话框中的“视图”标签中清除“行列标号”和“网格线”前的复选框。
二、编制功能模块
在“工具”选单中,单击“宏”下的“Visual Basic 编辑器”,启动VBA,单击“插入”选单中的“添加模块”命令,在Module1模块中分别加入以下过程:
1.设置自定义选单,替代Excel系统本身的选单
Sub DeleMenu() ′删除自定义选单
On Error Resume Next
CommandBars("Tax").Delete
End Sub
Sub DefineMenu() ′自定义选单
Dim TBar As CommandBar
Dim TButton As CommandBarButton
DeleMenu
Set TBar = CommandBars.Add(Name:="Tax",Position:=msoBarBottom,
MenuBar:=True)
Set TButton = TBar.Controls.Add(msoControlButton)
TButton.Style = msoButtonCaption
TButton.Caption = "退出"
TButton.OnAction = "QuitTax"
TBar.Protection = msoBarNoMove
′自定义选单不可移动
TBar.Visible = True
End Sub
Sub QuitTax() ′退出按钮的过程
DeleMenu
DefineWindow xlOff
DefineBar xlOff
ActiveWorkbook.Close
End Sub
2.设置新的窗口、恢复Excel窗口
在编制应用系统时往往要根据需要来重新设置窗口,结束应用程序时恢复Excel窗口。
Sub DefineWindow(X) ′X参数决定是调用设置新的窗口,还是恢复Excel窗口
Const NewWidth = 260
′定义新窗口的宽和高
Const NewHeight = 236
Static OldWidth
Static OldHeight
Static OldState ′保存窗口的状态
If X = xlOn Then
OldWidth = Application.Width
OldHeight = Application.Height
OldState = Application.WindowState
Application.WindowState = xlNormal
′窗口处于正常状态,以避免当窗口最大化时,不能改变窗口的高和宽的值
Application.Width = Ne wWidth
Application.Height = NewHeight
Application.Caption = "税收收入分析系统"
ActiveWorkbook.Unprotect
ActiveWindow.WindowState= xlMaximized
ActiveWindow.Caption = " "
ActiveWorkbook.Protect, True, True
Application.DisplayFormulaBar=False
′隐藏窗口中不必要的部分
Application.DisplayStatusBar = False
ActiveWindow.DisplayHorizontalScrollBar = False
ActiveWindow.DisplayVerticalScrollBar = False
ActiveWindow.DisplayWorkbookTabs=False
Else
′以下为恢复Excel窗口的状态,同上面部分相反
Application.Caption = Empty
Application.Width = OldWidth
Application.Height = OldHeight
Application.WindowState = OldState
ActiveWorkbook.Unprotect
Application.DisplayFormulaBar= False
Application.DisplayStatusBar = False
Application.DisplayFormulaBar = True
Application.DisplayStatusBar = True
ActiveWindow.DisplayHorizontalScrollBar = True
ActiveWindow.DisplayVerticalScrollBar = True
ActiveWindow.DisplayWorkbookTabs=True
End If
End Sub
3.移去和恢复工具栏
Sub DefineBar(X)
′由于工具栏名称和数目的不确定性,所以不能用变量来保存一系列工具栏,可以声明一个New
Collection类型变量,建立一个自定义集合来保存要恢复的工具栏。
Static OldBars As New Collection
Dim NewBar
′隐藏工具栏
If X = xlOn Then
For Each NewBar In Application.CommandBars
′如果命令栏是一个属性Type值为1的选单,并且是可见的不需要隐藏
If NewBar.Type 1 And NewBar.Visible Then
OldBars.Add NewBar
NewBar.Visible = False
End If
Next NewBar
Else
′恢复工具栏
For Each NewBar In OldBars
NewBar.Visible = True
Next NewBar
End If
End Sub
三、将封面嵌入应用系统
单击“工程资源管理器”窗口中的ThisWorkbook,插入以下内容作为工作簿打开和关闭时运行的命令。
Private Sub Workbook—Open()′工作簿打开
Worksheets("Logo").Select
DefineMenu
DefineWindow xlOn
DefineBar xlOn
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean) ′工作簿关闭
DeleMenu
DefineWindow xlOff
DefineBar xlOff
ActiveWorkbook.Saved=True
′退出时不提醒存盘信息
End Sub
关闭工作簿,重新打开,怎么样?
是不是很像一个专业的应用系统!