分享

科学网—电子表格VBA编程计算速成(2)

 你喜欢那个 2012-11-27

电子表格VBA编程计算速成(2)

已有 7289 次阅读 2007-9-30 16:14 |个人分类:科普园地

第二章  学习VBA编程基础
        学会了专业函数的编程,极大地方便了在电子表格里进行函数,工程、科学计算。但要实现复杂专业计算的自动化,还需要学会对工作簿、工作表和单元格常用基本操作的编程——VBA编程:主要是学会工作簿、工作表运行环境,选项,计算,编辑,输入,输出等的代码编写。
        在介绍常用编程代码之前,还是先来认识一下电子表格Excel的VBA代码编写的基本知识,这样对看懂后面的常用编程代码是很有必要的(当然,是对像我这样菜鸟级的人而言,对高手们来说也许是多余的话)。
2.1 认识VBA的对象、属性、方法、事件
        电子表格VBA是面向对象的编程语言。因为它简单、易学,功能强大,很受编程爱好者的喜爱。
        既然电子表格VBA是面向对象的编程语言,首先就要弄清电子表格VBA的对象是什么?有哪些?对象的属性、方法、事件是什么?有哪些?
        一,电子表格VBA的对象
        Excel应用程序(Application)范围内的设置和选项(例如“工具”菜单上“选项”对话框内的许多选项);返回顶级对象的方法,例如 ActiveCell 活动单元格和 ActiveSheet活动工作表 等都是VBA的对象。请看帮助文件中Excel对象模型
        二,电子表格对象的属性、方法和事件
        属性是对象本身固有的特性。如:单元格这一对象,用于存储计算数据和公式,它具有大小,字体,数据格式,填充色,边框,底纹,保护等属性。表示属性格式为:
        对象名称.属性名称=属性值,如:
        ActiveCell(1,2).Value= 100
        对象:ActiveCell(1,2);属性:Value=;属性值:100
        方法是对象能做的事,在VBA中,对象的方法就是对象本身包含的函数和过程。调用格式为:
        对象名称.方法名称,如:
        Range("G6").Select
        对象:Range("G6");方法:Select
        事件是发生在对象上的事情。在VBA中,事件是预先设置的,能被对象识别的动作。如Load加载、Click鼠标单击、Workbook_Open()、Worksheet_Activate()激活工作表等。
        VBA编程就是在VBA集成开发环境中通过编写代码,激发某种事件,驱动某种方法,以精心设计的流程,实现我们预期得到的结果输出。
        三,电子表格VBA语句代码的基本形式
        应该知道:每个VBA语句是构成VBA程序的基本单元;每个VBA语句都要实现一种功能,相关的一些语句组成完成特定任务的函数或过程、子过程,将许多函数、过程和子过程通过精心设计的流程组织起来,实现我们的预定目标,这就是VBA程序。
        在理解了对象、属性、方法、事件后,总结一下VBA语句的基本形式:
        1, 对象.属性=”属性值”
        如:ActiveCell(1,2).Value= 100   ‘ 对象ActiveCell(1,2)的Value值=100
        Sheet1.ScrollArea=”a1”    ‘ 对象Sheet1的ScrollArea滚动范围=”a1”
        2,对象.属性.….属性=”属性值”
        如:在 Sheet1 的 A1 单元格中创建一个公式
        Worksheets("Sheet1").Range("A1").Formula = "=10*RAND()"
        3,对象.方法
        如:激活工作表sheet1
        Worksheets("Sheet1").Activate
        4,对象.属性.方法
        如:将工作表 Sheet1 上单元格区域 A1:D4 中的公式复制到工作表 Sheet2 上的单元格区域 E5:H8 中。
        Worksheets("Sheet1").Range("A1:D4").Copy _
       destination:=Worksheets("Sheet2").Range("E5")
        5,对象.属性.….方法
        如:将 工作表Sheet1 上单元格区域 A1:D10 中的字体大小设置为12。
        Worksheets("Sheet1").Range("A1:D10").Font.Size = 12
        6,常用事件:
     (1)Workbook_Open():每次打开工作簿时发生。下例打开工作簿时,对窗口进行格式化。
    Private Sub Workbook_Open(),
        Dim oldcaption as string '用oldCaption变量保存打开本工作簿前的EXCEL标题
        Sheet1.Activate                           ' 激活工作表1
        With ActiveWindow               ' 以下是对当前活动窗口的操作
        .DisplayGridlines = False ' 不显示网格线
        .DisplayHeadings = False   ' 不显示行号列标
        .DisplayOutline = False ' 不显示大纲视图
        .DisplayZeros = False   ' 隐藏窗口0值★
        .DisplayHorizontalScrollBar = False   ' 隐藏水平滚动条
        .DisplayVerticalScrollBar = False   ' 隐藏垂直滚动条
        .DisplayWorkbookTabs = False   ' 隐藏工作表标签
        .WindowState = xlMaximized      ' 工作簿打开时最大化    
End With                            '结束针对当前活动窗口的操作       
ActiveWorkbook.DisplayDrawingObjects = xlHide ' 隐藏绘图工具栏
    With Application
        .DisplayFormulaBar = False ' 隐藏公式编辑栏
        .DisplayStatusBar = False ' 隐藏状态栏
        .ShowWindowsInTaskbar = False ' 隐藏窗口任务栏工具栏
      End With
Application.CommandBars("Standard").Visible = False '隐藏标准工具栏
Application.CommandBars("Formatting").Visible = False '隐藏格式工具栏
    End Sub
    2) Worksheet_SelectionChange(ByVal Target As Range):工作表上的选定区域发生改变时,产生本事件。下例滚动工作簿窗口,直至选定区域位于窗口的左上角。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    With ActiveWindow
        .ScrollRow = Target.Row
        .ScrollColumn = Target.Column
    End With
End Sub
3)命令按钮Click事件:在电子表格VBA编程计算中,最简单的启动方式就是在活动工作表上设计一个命令按钮,当用鼠标单击命令按钮,就启动设计的相应计算。下例单击工作表sheet1计算地形点坐标的命令按钮时引发的事件过程:(参见4.3)
Private Sub dxdzbButton1_Click() ‘ Private Sub 名称Buttonl_Click()
Dim xzan As String    ‘ 声明变量xzan
Dim msg, style, title, response    ‘ 声明变量msg, style, title, response
Application.AskToUpdateLinks = False    ‘ 取消Excel的更新链接
Sheet1.Visible = xlSheetVisible    ‘ 设置Sheet1(“地形点”)可见
Sheet3.Visible = xlSheetVisible    ‘ 设置Sheet3(“操作指南”)可见
Sheet2.Visible = xlSheetHidden    ‘ 设置Sheet2(“表面积”)不可见
Sheet1.Activate                 ‘ 激活Sheet1
……
End sub
(4)自定义菜单项事件:电子表格VBA编程计算的另一个启动方法是单击自定义菜单项。(3)例中如是单击的自定义“地形点坐标计算”菜单项,菜单项指定运行宏为:dxdzb(),则引发的事件过程代码为:
Private Sub dxdzb ()
Dim xzan As String
Dim msg, style, title, response
Application.AskToUpdateLinks = False
Sheet1.Visible = xlSheetVisible
Sheet3.Visible = xlSheetVisible
Sheet2.Visible = xlSheetHidden
Sheet1.Activate
……
End sub
 
2.2 在Excel VBA集成开发环境中编写、学习代码
我们看到,电子表格每个对象都有相应的许多方法和事件,要记下那么多的方法、事件、属性值,对一般人,特别是不懂英语的人来说是不可能的。VBA集成开发环境提供了对象和事件管理器,使编写代码不再困难。
一,在Excel VBA集成开发环境中编写代码
如图。
对象:Worksheet工作表;事件:Activate激活
过程:Private Sub Worksheet_Activate()……End Sub     ‘ 激活工作表过程
代码:Sheet1.ScrollArea=”a1”    ‘ 对象:Sheet1;属性ScrollArea滚动范围=”a1”
 

 

 这一代码过程,实现打开Worksheet工作表,Sheet1只有A1单元格是活动的。执行这一段代码,可用来保护Sheet1,防止被人删改。
在输入代码时,当在sheet1后,再输入小数点“.”(不含“”),立即出现“属性方法提示窗口”。你可以输入你设计的属性、方法的英语名称,也可以拖动提示窗口滚动条查找你需要的属性、方法,找到后点击上屏。如果你对英语不懂、不精,你还可以让《词霸》来帮你查看、选择。注:指点图标项表示属性;绿方块图标项表示方法。你看,是不是很方便!
Excel VBA集成开发环境中利用帮助系统学习编写代码
在Excel中,那数不清的对象、属性、方法、事件都可以通过自带的帮助系统来随时查询。学会在VBA集成开发环境中实时查询对象、属性、方法、事件的帮助,这是我们学习编程和正确编写代码的极好途径。
Excel VBA集成开发环境中,要取得某个关键字的联机帮助,最简单的方式就是将光标指到该关键字上的任何地方,再按下F1即可。不要选择此关键字。因为如果您只选择关键字的一部分或者选了一个以上的字,就会找不到需要的帮助。如下3图,是将光标分别停在show、Private、End Sub后,按下F1键分别显示的帮助窗口。
通过帮助窗口,我们就可以看到各有关属性、方法、事件的具体含义、用法和示例。通过反复的日积月累,步步深入,您也就逐步从“菜鸟”变成了“凤凰”。
值得注意的是:学海无涯, “有的放矢,学以致用”是我们学习的最便捷的原则,不要贪多求全,一口吃不了一个胖子。
 
 
 
 
 

  Excel VBA集成开发环境中,还有一个对象浏览器,点击对象浏览器图标即可打开它。


 
对象浏览器”可让您浏览工程中所有可获得的对象并查看它们的属性方法以及事件。此外还可查看工程中可从对象库获得的过程以及常数。很容易显示您所浏览的对象的联机帮助,也可用对象浏览器”去搜索和使用您所创建的对象;其它应用程序的对象也可用它来浏览。使用“对象浏览器”,请按照以下步骤执行:
1. 在“工程/库”列表中选定您所要查看的工程或程序库名称。
2. 使用“类”列表选定;使用“成员”列表去选定类或工程中的特定成员。
3. 查看在窗口底端的详细资料区选定的工程或类的信息。
4. 使用“帮助”按钮显示所选类或成员的帮助主题。
       用好对象浏览器,是我们学习VBA编程的极好工具,是第一手的大教程。市面上虽有许多大部头“教程”,但初学者能看的懂、用的上的好书实在是凤毛麟角,无怪乎有的朋友惊呼“垃圾书”太多!真希望我们的专家、高手们多写一些深入浅出的,少些概念,多些具体示例,让初学者能看的懂、用的上的好书。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多