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

excel_vba_编程教程(完整版)-第15部分

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



软Excel VB参考”-“Excel对象模型”。(译者:2002版有全局的对象模型,2003版好像没有这个。)  
除了Excel对象,你还可以使用Office,Forms和DAO,ADO对象模型。属于这些数据库(library) 
中的对象都可以用在Excel中,也可以用在Office家族中的其它应用软件中。在十五章,你可以看 
到使用DAO和ADO对象,从Excel进入Access数据库的例子。  

                                            44 

… 页面 61…

                                                                                               
图2-6 Excel对象(Worksheet)   
技巧2-4 VBA 和 Excel 的早期版本  
Excel在线帮助列出了Excel对象模型从早期版本以来的变化。许多对象,属性和方法都已经被更新 
的,改进的特色所代替了。为了提供兼容性,被取代的对象已经被隐藏起来了(译者:它们仍然是 
可用的)。打开VB编辑器窗口上的在线帮助,隐藏的对象同样可以在对象浏览器里找到。如果你在 
对象浏览器窗口上单击右键,你可以选择显示隐藏成员的选项。你将在以后的章节中学习如何使用 
对象浏览器。  

7 句法和文法  

既然现在你已经知道了VBA的一些基本组成要素(对象,属性和方法),是时间开始使用它们了。但 
是,你怎么将对象,属性和方法连接成正确的语言结构呢?每种语言都有语法规则,人们必须遵循 
语法以确保他们被理解了。无论你说的是英语,西班牙语,法语还是其它语言,你在读,写的时候 
都必须遵从一定的规则。在编程中,我们使用“句法”(syntax)这个术语来更确切地明确它的语 
言规则。你可以在在线帮助或者在对象浏览器窗口查找每个对象,属性或方法的句法。下面列出一 
些你必须的VB常用规则:  
如果这个属性没有自变量,使用下面的句法:  
Object。Property  

                                           45 

… 页面 62…

对象是一个占位符,是你放置你想要进入的实际对象名称的地方。属性同样也是一个占位符,你可 
以在这里放置该对象的特点。例如:指向工作表中单元格A4中输入的值,见下述指令:  
Range(〃A4〃)。Value  
注意对象名称和属性之间的句号。当你需要进入一个存在于多个其它对象里的对象的属性时,你必 
须按顺序地写上所有对象的名称,并且用 句号运算符分开。例如:  
ActiveSheet。Shapes(2)。Line。Weight  
这个例子指向当前工作表里图形(Shapes)集合里的第二个对象里的直线(Line)对象的粗细 
 (Weight)属性。  
有些属性要求一个或多个自变量。例如,使用偏移(Offset)属性,你可以选择一个和当前单元格 
相对位置的单元格。Offset属性需要两个自变量,第一个自变量为行号(rowOffset)第二个是列 
号(columnOffset)。  
   对象       属性  自变量  
ActiveCell。Offset(3; 2)  
在上面的例子中,假设当前单元格是A1,Offset(3; 2)将会指向往下3行和往右两列的单元格,也 
就是单元格C4。因为,在括号内的自变量总是很难理解,通常操作是将它们的名称也列上,见下例:  
ActiveCell。Offset(rowOffset:=3; columnOffset:=2)  
注意,自变量名称后面总是跟着一个冒号和一个等于号(:=)。如果你使用带名称的自变量,你可 
以任意顺序地列出它们,上面的指令也可以写成这样:  
ActiveCell。Offset(columnOffset:=2; rowOffset:=3)  
改后的指令没有改变意思,你仍然指向单元格C4。然而,如果你改变ActiveCell。Offset(3; 2)中 
自变量的次序,结果你会指向D3,而不是C4。  
Object。Property = Value  
Value是一个新的你要赋给该对象属性的值。这个值可以是:  
        Range(〃A4〃)。Value = 25  
    上面的指令在当前工作表的单元格A4里输入数字25  
        ActiveCell。Font。Name = 〃Times New Roman〃  
    上面的指令将当前单元格字体改为Times New Roman  
        ActiveCell。Font。Bold = True  
    上面的指令设置当前单元格的字体为粗体。  
Variable = Object。Property  
Variable(变量)是VB将要储存属性设置的地方的名称,你将在第三章里学习关于变量的知识。  
   变量          对象             属性  
CellValue = Range(“A4”)。Value  
上面的指令将当前A4单元格里的值保存到变量CellValue。  
如果该方法没有自变量,那么句法应该是:  
Object。Method  
对象是一个占位符,是你放置你想要进入的实际对象名称的地方。方法同样也是一个占位符,你可 
以在这里放置要对该对象的进行的操作的名称。例如,可以使用下述指令来清除单元格A4的格式(译 
者:应该是内容):  
对象              方法  
Range(〃A4〃)。ClearContents  
如果该方法可以使用自变量来限制,那么句法为:  
Object。Method (argument1; argument2; … argumentN)  
例如,使用GoTo方法,你可以快速地选择工作表里的任何区域。GoTo方法的句法为:  

                                           46 

… 页面 63…

Object。GoTo(Reference; Scroll)          ‘对象。GoTo(参照; 窗口滚动)  
Reference自变量是目标单元格或者区域,Scroll自变量可以设定为真(True)让Excel窗口滚动到 
该目标地址出现在窗口的左上角;或者设定为假(False),窗口不滚动(译者:系统默认为False)。 
例如,下面的VBA语句选择工作表Sheet1里的单元格P100,并且窗口滚动:  
Application。GoTo _   
        Reference:=Worksheets(〃Sheet1〃)。Range(〃P100〃); _   
        Scroll:=True  
上面的指令没有固定在一行,使用了一条特殊的线(下划线)将它分为几段。下面的部分将讲述这 
个。  

8 打断很长的 VBA 语句  

尽管一行VBA代码最多可以包含1024个字母,但是,为了使你个过程容易阅读,最好将长的语句打 
断为两行甚至多行。VB使用一个专门的连续线(下划线)置于一行代码的末尾,表明下一行是这行 
的连续。例如:  
Selection。PasteSpecial _   
        Paste:=xlValues; _   
        Operation:=xlMultiply; _   
        SkipBlanks: =False; _   
        Transpose:=False  
这个连续符是下划线,你必须在下划线之后带一个空格。  
你可以在下述几种情况中使用连续符:  
你不可以在冒号和等于号之间使用连续符,例如,下面的代码VB是不认的:  
Selection。PasteSpecial Paste: _   
        =xlValues; Operation: _   
        =xlMultiply; SkipBlanks: _   
        =False; Transpose: _   
        =False Selection。PasteSpecial Paste: _   
        =xlValues; Operation: _   
        =xlMultiply; SkipBlanks: _   
        =False; Transpose: _   
        =False  
同样,在引号之内的文本之间加连续符也是不对的,例如,下面的下划线的使用是无效的:  
MsgBox 〃To continue the long instruction; use the _   
        line continuation character。〃  
上面的指令应该打断为如下代码:  
MsgBox 〃To continue the long instruction; use the 〃 & _   
        〃line continuation character。〃  

9 了解 VBA 错误  

在编写或编辑VBA过程之中,无论你多名小心,出错的可能性还是很打的。例如,你可以错误拼写 
一语句,放错了一个逗号或引号,或者忘记了一个句号或右括号。这些类型的错误称为句法错误。 
幸运的是,VB比较容易帮助你发现这种类型的错误。为了让VB在你输入一行代码后,自动帮你检测 
语法的正确性,你需要在VB窗口的“工具”-“选项”里,确保勾选了“编辑器”页上的“自动语 
法检测”。  

                                              47 

… 页面 64…

                                                                  
图2-7 选项对话框的编辑器上的“自动语法检测”帮你检查VBA过程里的打字错误  
当VB发现语法错误时,弹出一个错误信息框,并且将有误的代码行颜色变为红色(参见图2-8)或 
者其它在选项对话框“编辑器格式”页设定的颜色。如果错误信息框上的解释不够清楚,你总是可 
以点击“帮助”按钮寻求更多的帮助。再如果VB在线帮助无法给你提供正确的方向,那么返回你的 
程序,仔细检查有误的那行代码是否漏掉了字母,引号,句号,冒号,等于号,左括号和右括号等。  

                                                                         
图2-8 这个错误由于漏掉了常数xlCellType前面的括号而产生  

                                           48 

… 页面 65…

                                                                        
图2-9 当VB试图在工作表或单元格区域里选择一个并不存在的单元格时,就会产生一个运行时间 
错误  
查找语法错误可能是烦人的并且费时的事情。有些语法错误只有在过程运行的时候才能被发现。在 
试图运行你的过程的时候,VB可能找到那种因为使用了无效的自变量,或者是漏掉了那些需要成对 
使用的指令如If语句和循环结构,而造成的错误。  
技巧2-5:程序调试  
你很可能不只一次听过“计算机程序里充满了错误”。在编程里,错误就被称为“bug”(错误,漏 
洞),而“调试”(debug)则是给你的程序除错的过程。调试的第一步就是改正所有的语法错误。 
VB提供了无数种工具,你可以使用它们来追踪和消除错误。在本章中,你将知道如何使用VB助手帮 
助你在编写程序时出现尽可能少的错误;在第十三章中,你将学习如何使用专门的调试工具来捕获 
你VBA程序里的错误。  
除了语法错误外,还有其它两种错误:运行时间和逻辑。运行时间错误发生在过程运行的时候。图 
2-9显示了一种典型的运行时间错误。运行时间错误经常发生在那些程序员在编写代码的时候没有 
想到的情况。例如,当程序试图访问一个用户电脑上并不存在的驱动器或者文件,或者没有首先检 
查是否用户插入软盘并关闭软驱口而试图复制一个文件到软盘,这时就会发生运行时间错误。  
第三种错误——逻辑错误,通常不会发出明确的错误信息。过程可能没有语法错误,甚至运行无误, 
然而,得到的却是错误的结果。逻辑错误通常非常难以查找,并且它藏得很隐秘,间歇发生,你不 
能指望花几个小时,甚至几天,就能找到错误源。  

10 查找帮助  

当你使用宏录制器时,你所有的操作都被翻译成VBA指令,并且放置在一个模块里。你在研究这些 
录制的过程时,不要忘记帮助随时可用。你会发现有些代码的意思可能会非常易懂,然而,有效却 
不怎么明白。这时候,你就需要寻求帮助了。当你独自工作时,只要轻轻一点或者轻轻一按就可以 
请教你的VBA老师了。使用VB在线帮助比使用词典或参考手册要快捷和容易得多。如果你讨厌一页 
一页地在词典里找你需要的术语,你将惊讶于你如何快地从VB代码窗口找到需要的帮助页面。  
让我们来检查你如何通过内置的VBA老师的帮助,将WhatsInACell过程里的第一句变成你自己的VBA 
词汇:  
Selection。SpecialCells(xlCellTypeConstants; 2)。Select  
上面的指令可以打断为三部分,哪些部分?Selection是对象还是属性?SpecialCells是什么? 
Select是什么?要回答这些问题,请依照下面的操作:  
1。  激活你要分析的过程的代码窗口  
2。  点击你不懂的词语  
3。  按下F1  

                                           49 

… 页面 66…

                                                                                                 
图2-10 VBA的对象,属性和方法在在线帮助里解释得很详细  
帮助就会显示相应的页面。如果你的光标放在词语“Selection”中间,你就会知道Selection可以 
是一个应用程序的属性,也可以是一个窗口对象。如果你的光标在下一个不明白的术语 
 (SpecialCells)并且按上面的步骤再做一遍后,你将看到SpecialCells帮助屏幕 (参见图2-10)。 
注意,每个帮助主题包含许多信息。被查找的指令类型显示在帮助窗口的上面;指令的类型允许词 
语分类。例如,SpecialCells是方法,可以使用这个方法的对象名称列在“应用于”下面(译者: 
点击“应用于”,出现对象名称列表)。指令名称下面的“参阅”和“示例”让你快速地跳到其它应 
用或意义相似的指令,以及查看使用这个指令的例子。指令的意义显示在“参阅”和“示例”标题 
的下面。接下来则是语法和需要的自变量和其它参数。“说明”部分给出一些推荐使用该指令的情 
形。  
你可以很容易地将示例中的代码复制到你的过程中去:选中你要复制的代码行,按下Ctrl+C,或者 
单击右键,选择快捷菜单上的“复制”,然后切换到VB代码窗口,点击你需要粘贴代码的地方,再 
按下Ctrl+V或者选择“编辑”-“粘贴”。  

11 语法和编程快捷助手  

VB编辑器窗口上的“编辑”工具条上有很多按钮,帮助你快速容易地输入正确格式的VBA指令。如 
果“编辑”工具条目前在VB编辑器窗口上不可连接,那么你可以选择“视图”-“工具条”  

                                                                  
图2-11 编辑工具条上的按钮使得编写程序和设置指令格式变得很容易   

                                            50 

… 页面 67…

在VB中编写过程需要你使用成百上千的内置指令和函数。因为大多数人们无法学习所有VBA里可用 
指令的语法,IntelliSense提供了你所需求的语法和编程帮助。当你在代码窗口编程时,经常会有 
专门的窗口弹出来,引导你完成正确的VBA代码。  

12 属性/方法列表  

每个对象都会有许多属性和方法。当你输入一个对象名称和一个句号以分开这个对象名称和它的属 
性或方法时,弹出一个列表菜单。这个菜单列出了在这个句号之前的对象的所有可用的属性和方法 
 (参见图2-12)。如何打开这个自动工具?选择“工具”-“选项”,单击选项对话框上的“编辑 
器”页,确保勾选上“自动列出成员”。  

                                                         
图2-12 在输入VBA指令时,VB会建议可以用于该对象的属性和方法  
如何从弹出菜单(图2-12)上选择项目?试图输入你需要的属性或方法名称的前几个字母,当Excel 
突出显示了正确的项目名称,则回车,插入该项目到你的代码中去,并且开始新的一行;或者,你 
需要在同一行继续写代码,那么就按Tab键代替回车。你也可以双击该项目来插入到代码中去。只 
要按Esc键就可以关闭这个弹出菜单,而不插入任何项目。当你按Esc键取消了弹出菜单后,VB将不 
会对同样的对象显示该菜单。你可以通过以下方法来再次显示属性/方法弹出菜单:  

13 常数列表  

本章的前面,你学习了给属性赋值,需要使用下面规则:  
Object。Property = Value  
如果选项对话框(编辑器页)已经勾选了“自动列出成员”,Excel就会在等号前的属性弹出一个菜 
单,列出该对属性有效的常数。常数是表明确切的描述或者结果的值。Excel和Office里面的其它 
应用软件都有很多预先定义的内置常数。你将在第三章中学习常数,常数类型和使用。  
假设你需要你的程序打开Excel工作表上的分页预览。“编辑”(译者:视图)菜单上有两个选择: 
普通视图和分页预览。普通视图是绝大多数Excel任务的默认视图模式;分页预览则是编辑视图, 
显示工作表中有内容的区域。这两种选项都有相应的内置常数来表示。Excel
返回目录 上一页 下一页 回到顶部 1 2
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!