VB使用Option Explicit语句自动提醒你正式地声明你的变量,这个语句必须放在每个模块的最上面。如果你试图运行一个含有未定义的变量的过程时,Option Explicit语句会让VB产生一个错误信息。
1. 返回代码窗口你输入过程CalcCost的地方
2. 在模块的最上面输入Option Explicit并回车,Excel将该语句显示为蓝色
3. 运行过程CalcCost,VB显示错误信息“编译错误:变量未定义”
4. 点击确定关闭信息框。
VB加亮变量名称slsPrice。现在你需要正式声明这个变量。当你声明了变量slsPrice并再次运行该过程时,VB一旦遇到另外一个未声明的变量时,将再次产生同样的错误。
5. 在CalcCost过程的开始部分输入下述声明:
declaration of variables (声明变量)
Dim slsPrice as Currency
Dim slsTax as Single
Dim Cost as Currency
Dim strMsg as String
6. 按下F5来运行该过程,修改后的程序显示如下“
Option Explicit
Sub CalcCost()
declaration of variables
Dim slsPrice As Currency
Dim slsTax As Single
Dim Cost As Currency
Dim strMsg As String
slsPrice = 35
slsTax = 0.085
Range(“A1”).Formula = “The cost of calculator”
Range(“A4”).Formula = “Price”
Range(“B4”).Formula = slsPrice
Range(“A5”).Formula = “Sales Tax”
Range(“A6”).Formula = “Cost”
Range(“B5”).Formula = Format((slsPrice * slsTax), “0.00”)
Cost = Format(slsPrice + (slsPrice * slsTax), “0.00”)
With Range(“B6”).Formula = Cost
strMsg = “The calculator total is ” & “$” & Cost & “.”
Range(“A8”).Formula = strMsg
End Sub
在模块上面输入的Option Explicit语句强迫你声明变量,因为如果你需要声明变量的话,你必须每次在添加新模块时输入Option Explicit语句,所以你可以让VB帮你输入它。按照下述步骤来自动在新模块里添加Option Explicit语句:
1. 选择“工具”-“选项”
2. 确保选项对话框(编辑器页)上的“要求变量声明”被勾选上了
3. 点击确定关闭对话框
从现在开始,每个新模块都会在第一行添加Option Explicit语句。如果你要在一起创建的模块里
强制声明变量的话,你必须手动输入Option Explicit。
技巧:Option Explicit更多信息
Option Explicit强迫正式(显式)声明模块里的所有变量。使用它的一个重大优点是,输入错误会在编译时(VB试图将源代码翻译为可执行代码)被检测到。Option Explicit语句必须在模块里的任何过程之前出现。
了解变量范围
模块级别范围
工程级别范围
过程级别(当地)变量
模块级别变量
Dim slsTax As Single
Sub CalcCost( )
<放置过程指令>
End Sub
Dim slsPrice As Currency
Dim Cost As Currency
slsPrice = 55.99
Cost = slsPrice + (slsPrice * slsTax)
MsgBox slsTax
MsgBox Cost
End Sub
当你在模块级别声明变量时,除了关键字Dim之外,你还可以使用关键字Private。例如:
为了避免工程级别的变量内容被工程之外使用,你可以在Option Explicit语句下面,模块的上面输入Option Private Module,例如:
Option Private Module
Public slsTax As Single
Sub CalcCost( )
<这里是过程代码>
End Sub
工程级别变量
模块级别的变量用关键字Public(而不是Dim)声明时,拥有工程级别范围。这意味着它们可以在VBA任何模块里使用。当你想要在一个打开的VBA工程的所有过程里使用某个变量时,必须用Public关键字来声明它,例如:
Public slsTax As Single
Sub CalcCost( )
<过程代码>
End Sub
变量的存活期
了解和使用静态变量
用Static关键字声明的变量是特殊的当地变量,静态变量在过程级别声明。和那些用关键字Dim声明的当地变量相反,静态变量在程序已经不在它们的过程里时仍然不会丢失它们的内容。例如,当一个带有静态变量的VBA过程调用另外一个过程时,在VB执行完被调用的过程语句后返回主调过程时,静态变量仍然保留它原来的值。过程CostOfPurchase示范静态变量allPurchase的使用:
declare variables
Static allPurchase
Dim newPurchase As String
Dim purchCost As Single
newPurchase = InputBox(“Enter the cost of a purchase:”)
purchCost = CSng(newPurchase)
allPurchase = allPurchase + purchCost
display results
MsgBox “The cost of a new purchase is: ” & newPurchase
MsgBox “The running cost is: ” & allPurchase
End Sub
在CSng上的任意地方按下F1,可以查看更多关于函数CSng的信息(也可以查看其它类型转换函数信息)下一行指令:allPurchase = allPurchase + purchCost,将InputBox函数提供的新数值加和到目前的采购数值上。当你第一次运行这个过程的时候,变量allPurchase和变量purchCost的内容是一样的;当你第二次运行它的时候,这个静态变量的值由对话框提供的值增加了。你可以随意多次运行过程CostOfPurchase,只要该工程是开着的,变量allPurchase就会不断的变化。依照下述步骤来试验该过程:
2. 当对话框出现时,输入一个数字,例如,输入100然后回车。VB显示信息““Thecostofanew
purchase is: 100.”
3.点击确定,VB显示第二个信息“The running cost is: 100.”
4.重新运行该程序,当对话框出现时,输入另外一个数字,例如输入50再回车。VB显示信息“The
cost of a new purchase is 50.”
5. 点击确定,VB显示第二个信息“The running cost is: 150.”
6. 多次运行该程序,看看VB是如何追踪运行的总量的。
作者:admin,如若转载,请注明出处:https://www.web176.com/vba/20270.html