VBA在Excel 2000中的应用二例 预埋计算公式 Excel 2000是非常优秀的电子表格软件，在一些常用的统计报表中，如求最大值、最小值、平均值……，我们只需在需要输出结果的活动单元格中预埋计算公式即可，但对于一些比较复杂的情况，采用预埋计算公式的方法就无能为力了。这时我们必须用VBA(Visual Basic for Application)才能解决问题。 这是一个比较简单的程序，其作用如下：我们在A1～A3、B1～B3活动单元格中分别输入不同的数值，用鼠标单击“运算”按钮后，程序将用A1～A3活动单元格中的最大值减去B1～B3活动单元格中的最大值，如果运算结果大于零则在B4活动单元格中显示“大于零”；如果运算结果等于零则在B4活动单元格中显示“等于零”；如果运算结果小于零则在B4活动单元格中显示“小于零”。
VBA代码如下：
Private Sub CommandButton1_Click()
Range(″b4″).Select
ActiveCell.Formula =″=max(a1:a3)″
ma = ActiveCell.Value
Range(″b4″).Select
ActiveCell.Formula = ″=max(b1:b3)″
mb = ActiveCell.Value
m = ma - mb
Range(″b4″).Select
If m > 0 Then
ActiveCell.Formula = ″大于零″
ElseIf m = 0 Then
ActiveCell.Formula = ″等于零″
Else
ActiveCell.Formula = ″小于零″
End If
End Sub
简单说明如下：
①ActiveCell.Formula = “=max(a1:a3)”
ma = ActiveCell.Value
Range(″b4″).Select
ActiveCell.Formula = ″=max(b1:b3)″
mb = ActiveCell.Value
上述语句的作用是从A1～A3、B1～B3活动单元格取出各自的最大值并将其分别赋予变量ma、mb。
②m = ma - mb
Range(″b4″).Select
If m > 0 Then
ActiveCell.Formula = ″大于零″
ElseIf m = 0 Then
ActiveCell.Formula = ″等于零″
Else
ActiveCell.Formula = ″小于零″
End If
上述语句的作用是先将ma-mb赋予变量m，然后选择b4活动单元格，接着对变量m的值进行判断：如m大于零则在b4活动单元格显示“大于零”；如m等于零则在b4活动单元格显示“等于零”；如m小于零则在b4活动单元格显示“小于零”。
保住机密Excel文件的秘密
一般保护工作表采取的方法是用Excel菜单中的“保护”命令，有时这尚嫌不足，比如一些机密文件不能让某些使用者看到，但又需要他来操作工作簿中的某些表，怎么办？可利用VBA设立工作表的使用权限，使他只能看到和其工作有关的部分。
在Excel中，单击“工具”，再单击下拉菜单中的“宏”命令，单击“Visual Basic编辑器”项，打开“工程资源管理器”，双击该工作表，现在出现的是设置该表的属性的编辑窗口，单击窗口左上的下拉列表框，选择“worksheet”项，这时再从该窗口右上方的列表框中选择Active(激活)，这时自动显示如下的语句块:
Private Sub Worksheet_Activate( )
End Sub
在其中加入代码(假设用“123”作为密码,Sheet“机密文档”为限制权限文档，Sheet“普通文档”为工作簿中可以让他人操作的工作表)，程序如下：
Private Sub Worksheet_Activate( )
If Application.InputBox(″请输入操作权限密码:″) = 123 Then
Range(″A1″).Select
Sheets(″机密文档″).Cells.Font.ColorIndex = 56
Else
MsgBox ″密码错误,即将退出!″
Sheets(″普通文档″).Select
End If
End Sub
Private Sub Worksheet_Deactivate( )
Sheets(″机密文档″).Cells.Font.ColorIndex= 2
End Sub
大家将它们拷贝到自己的工作表中试试看，很简单，只是别忘记密码。

(张 阳)