友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
飞读中文网 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

excel_vba_编程教程(完整版)-第33章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!



算结果储存到Age这个变量。员工的姓名和年龄通过指令Debug。Print打印到立即窗口。当程序运行 

                                           71 

… 页面 88…

结束后,你必须打开立即窗口来查看结果。  
我们来看看你声明了错误的数据类型,会发生什么情况。下面的过程是计算一个工作表里的总单元 
格数目,并且将结果使用一个对话框显示给用户。  
Sub HowManyCells( )   
        Dim NumOfCells As Integer   
        NumOfCells = Cellsunt   
        MsgBox 〃The worksheet has 〃 & NumOfCells & 〃 cells。〃   
End Sub  
错误的数据类型会导致错误。在上面的过程里,当VB尝试将Cellsunt语句的结果赋给变量 
NumOfCells时失败,Excel显示信息“运行时间错误6——溢出”。这个错误的产生原因时变量的无 
效数据类型,工作表里单元格总数目不在Integer数据范围之内。要更正这个问题,你应该选择一 
个可以包含一个大数据的数据类型。然而,要快速地解决上面程序遇到的问题,你只要删除变量类 
型As Integer就行了。当你重新运行这个过程时,VB将给你的变量分配为Variant类型,尽管Variant 
比其它变量类型使用更多的内存和降低程序运行速度(因为VB不得不做额外的工作区检查变量类 
型),但是,如果这是在一个简短的程序里,使用Variant的代价也是难以觉察的。  
技巧3-6 变量类型是什么?  
通过下述方法,你可以快速地查明你程序里使用的变量的类型:在变量名称上单击右键,并且从快 
捷菜单上选择“快速信息”。  
技巧3-7 串联  
你可以将两个或多个字符串结合成为一个新的字符串。这个操作称为串联。你已经在AgeCalc和 
HowManyCellss过程里看到了串联的例子。串联用&符号在表示。例如,“His name is ” & FirstName 
将会产生下述字符串:His name is John,或者His name is Michael。人名取决于变量FirstName 
的内容。注意,在is和结束引号之间有一个空格。字符串的串联也可以使用加号(+)来代表,然 
而,许多程序员为了消除混淆,宁愿将加号限制于数字的运算。  

6 明确变量的数据类型  

如果你在Dim语句里没有明确变量的数据类型,你最终将得到没有归类的变量。没有归类的包括, 
在VBA里,总是当成Variant数据类型。高度建议你产生归类了的变量。当你声明变量为某种数据类 
型,你的VBA程序会运行得更快一些,因为VB不需要停下来分析Variant变量到底是什么类型。  
VB可以使用很多种数字变量。Integer变量只能保存从–32;768到32;767之间的所有整数。其它类 
型的数字变量有Long,Single,Double和Currency。Long变量可以保存从–2;147;483;648到 
2;147;483;647范围的所有整数。与Integer和Long相反,Single和Double变量可以保存小数。String 
变量用来引用文本。当你声明了一个String数据类型的变量时,你最好告诉VB这个字符串有多长, 
例如:  
Dim extension As String * 3  
声明变量extension字符串的长度为3个字符。如果你不给它分配一个明确的长度,这个字符串变量 
将是动态的。这意味着VB将会占用足够大的电脑内存来处理任意容量的文本。声明了变量后,你只 
能保存声明语句里显示的信息类型。给数字类型的变量赋文本值,或给文本类型变量赋数字值,都 
会导致“类型不匹配”的错误信息,或者导致VB修正该值。例如,如果你的变量声明为保存整数, 
而你的数据是小数, 那么VB会忽略小数部分而只用数据的整数部分。试验一下下面的MyNumber过 
程,看看VB是如何修正数据以适合变量数据类型的:  
Sub MyNumber()   
        Dim myNum As Integer   
        myNum = 23。11   
        MsgBox myNum   
End Sub  
如果你不用Dim语句声明变量,你通过在变量名称后面加上一个特殊字符同样可以指明该变量的类 
型。例如下面,你可以在变量名称后面附上美元()符号,来指明变量FirstName为字符串类型 
 (String):  
Dim FirstName  

                                                72 

… 页面 89…

上面的声明和Dim FirstName As String是一样的。其它类型的声明字符列在表3-2里面。  
表3-2 类型声明字符  
数据类型                      字符  
Integer                       %  
Long                          &  
Single                         !  
Double                        #  
Currency                      @  
String                          
  
注意,类型声明字符只能用于六种数据类型。将这些字符附在变量名称后面就可以使用这些类型声 
明字符了。过程AgeCalc2示范表3-2中类型声明字符的使用情况:  
Sub AgeCalc2()   
       'variable declaration (变量声明)  
       Dim FullName   
       DateOfBirth As Date   
       Dim Age%   
       'assign values to variables (给变量赋值)  
       FullName = 〃John Smith〃   
       DateOfBirth = #01/03/1967#   
       'calculate age (计算年龄)  
       Age% = Year(Now())…Year(DateOfBirth)   
       'print results to the Immediate window (在立即窗口里输出结果)  
       Debug。Print FullName & 〃 is 〃 & Age% & 〃 years old。〃   
End Sub   
技巧3-8 声明变量类型  
变量类型可以用As后面的关键字来标示,也可以用后面附加的类型符号来标示。如果你既不加类型 
符号也不使用As命令,那么这个变量将为默认的类型,那就是VBA中的Variant类型。  

7 变量赋值  

既然你已经知道如何命名和声明变量了,是时候开始使用它们了。我们以学习如何创建变量开始。 
在VB中,你可以在你程序的任何地方创建变量,只有给它赋个值就行。  
1。  打开一个新工作簿并且保存为Chap03。xls  
2。  激活VB编辑器窗口  
3。  在工程浏览器窗口,选择这个新的工程并在属性窗口里将它的名称改为Chap03  
4。  选择“插入”-“模块”在工程Chap03里面添加一个新模块  
5。  在属性窗口将该模块名Module1改为Variables  
6。  在代码窗口,输入CalcCost过程,如下面所示。这个过程基于下述假设来计算购买一个计算器 
    的价钱:计算器的价格为35美元,销售税为8。5%  
Sub CalcCost()   
       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 = slsPrice * slsTax   
       Cost = slsPrice + (slsPrice * slsTax)   
       With Range(〃B6〃)   

                                           73 

… 页面 90…

              。Formula = Cost   
              。NumberFormat = 〃0。00〃   
       End With   
       strMsg = 〃The calculator total is 〃 & 〃〃 & Cost & 〃。〃   
       Range(〃A8〃)。Formula = strMsg   
End Sub   
过程CalcCost使用了四个变量:slsPrice,slsTax,Cost和strMsg。因为这些变量都没有显式声明, 
所以它们的数据类型都是Variant。变量slsPrice和slsTax是在过程的开始时通过给它们赋值而产 
生的,变量Cost分配的值是下面计算的结果:slsPrice + (slsPrice * slsTax)。价格的计算是使 
用变量slsPrice和slsTax提供的值来进行的。变量strMsg将信息合并为一个文本信息给用户,然后 
这个信息是在工作表的一个单元格里输入一个完整的句子。  
当你给变量赋值时,需要在变量名称后面输入一个等号,等号之后是你要输入的值。它可以是数字, 
公式或者带引号的文本。赋给变量slsPrice,slsTax和Cost的值比较容易理解,然而保存在变量 
strMsg的值则有些棘手。我来解释一下变量strMsg的内容吧。  
strMsg = 〃The calculator total is 〃 & 〃〃 & Cost & 〃。〃  
    包括起来  
    独再在后面加上它。  
现在来运行它,将光标放在过程CalcCost的任何地方,并且选择“运行”-“运行宏”  
技巧3-9 变量初始化  
VB创建变量的时候就将其初始化了。变量假定为它们的默认值,数字型变量设置为0,布尔型变量 
初始化为False,字符串变量设置为空字符(””),已经日期型变量则设置为1899年12月30日  
注意,你在运行这个过程时,VB可能会弹出下面的信息:“编译错误:变量未定义”。如果这个情况 
发生了,点击确定以关闭这个信息框。VB将会选中变量slsPrice并且加亮过程名称Sub CalcCost, 
标题栏则显示“Microsoft Visual Basic-Chap03。xls '中断'”。VB中断模式允许你在继续之前更 
正错误。在本书的后面,你将学习如何在中断模式下解决问题。就现在而言,如果你遇到上面提及 
的错误时,通过选择“运行”-“重新设置”来退出中断模式;接下来,在代码窗口的上面删除显 
示在第一行的语句Option Explicit。Option Explicit语句意味着
返回目录 上一页 下一页 回到顶部 1 1
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!