zoukankan      html  css  js  c++  java
  • VBA中级班课时1小结

    终于开始盼望已久的VBA中级班!很荣幸地成为中级班的第一批学员,现在就让我们开始VBA新的旅程吧!

    1 变量的命名规则

    1.1 变量

    有些数据是在程序执行中会发生变化的,为此我们分配一个内存中的位置,来存储这些不确定的数据,这就是变量。每一变量都有变量名,在同一范围内必须是唯一的。可以指定数据类型,也可以不这么做。

    1.2 变量命名规则

    变量名必须以字母开头(中文版可以中文开头),由字母、数字和下划线组成(中文版中可以使用中文),不得超过255个字符(所有版本一致)。要注意的是,变量名不可以是系统的保留名称,如if、else、end等。

    • VBA中变量名不区分大小写

    2 声明变量

    声明变量是确定变量名并为变量指定数据类型。按其定义方式可分为显式声明和隐式声明。

    2.1 显式声明

    即先声明变量类型,再引用变量,语法为:

             Public | Static | Private | Dim <变量名> [as 数据类型]

        变量名:用来引用变量

    数据类型:确定变量存储信息的类型和占用内存大小

    • [as数据类型]可以省略,当省略时,VBA自动为变量指定为变体型数据类型(Variant)。

    2.1.1 类型声明字符

    在VBA中可以使用一些字符来代表数据类型,简化声明变量,这就是类型声明字符,不是所有数据类型都有类型声明字符,下表中给出了所有的类型声明字符:

    数据类型

    类型声明字符

    字符串型(String)

    $

    整型(Integer)

    %

    长整型(Long)

    &

    单精度浮点型(Single)

    !

    双精度浮点型(Double)

    #

    货币型(Currency)

    @

    举例:

    Dim iRow&    '声明长整型变量iRow

    2.1.2 同时声明多个变量

    在声明变量时,如果有多个变量,我们可以用逗号来分隔不同变量:

    Dim <变量名1> [as 数据类型], <变量名2> [as 数据类型],………………

    • 每个变量都要指定数据类型,省略数据类型相当于指定为变体型。

    举例: Dim i, j as long    '表示i是Variant型,而j是long型

    2.2 隐式声明

    即在过程引用变量前不事先声明此变量。在这种情况下,VBA会自动为变量分配成Variant数据类型。因为Variant型范围最广、内存容量最大,所以可以存储除定长字符串型和用户自定义型外的所有数据类型。

    • Variant型因其占用内存较大,会拖累程序的运行速度,所以我们应尽量地使用显式声明,为变量指定合适的数据类型,而不要过多的使用Variant型。
    • 注意:只有在过程中引用的局部变量才可以使用隐式声明,公共模块级别、私有模块级别和静态变量没有隐式声明方式。具体内容将在后面的变量作用范围中讲到。

    2.3 强制变量声明

    两种方法可以强制要求必须显式声明变量

    1)在一个模块的第一行写入Option Explicit语句。

    2)VBE窗口"工具"选项"要求变量声明

    • 当设置了"要求变量声明"后,VBA会在新模块(包括工作表模块、窗体模块、标准模块和类模块)自动生成Option Explicit语句,却不会在已存在的模块中自动生成
    • Option Explicit语句只在它所在的模块中起作用

    3 变量的作用域和生存周期

    3.1 变量的作用域

    变量的作用域也是变量的范围,在声明变量的同时也定义了变量的作用域。

    级别

    关键字

    声明语句位置

    变量作用范围

    过程级别变量

    (局部变量)

    Dim

    在过程内声明

    只在此过程内才能访问和改变该变量

    Static

    在过程内声明静态变量

    私有模块级别变量

    (模块级变量)

    Private Dim

    在模块顶部声明区内声明

    在此模块内的所有过程内都可访问和改变该变量

    公共模块级别变量

    (全局变量)

    Public

    在模块顶部声明区内声明

    整个工程任何模块中的任何过程都可访问和改变该变量

    • 在模块级别中使用 Dim 语句与使用 Private 语句是相同的。不过使用 Private 语句可以更容易的读取和解释代码。

    3.2 静态变量

    当使用 Static 语句取代 Dim 语句时,所声明的变量称为静态变量。静态变量只能是局部变量,只能在过程内声明。

    3.3 变量的生存期

    变量除了有范围外,还有生存周期,它的生存周期与它的范围一致,变量值将在范围消失后失去。

    Dim 语句声明的局部变量,变量值在过程结束后释放内存,在再次执行此过程前,它将重新被初始化;静态变量在过程结束后,只要整个程序还在运行,都能保留它的值而不被重新初始化。而当所有的代码都运行完成后,静态变量才会失去它的范围和生存期。

    模块级变量与公共级变量的生存期与静态变量生存期相同,只有当整个程序结束后才会失去生存期。

    3.4 变量的引用

    1)不同模块中的公共模块级别变量同名,在过程中调用时,使用

    模块名.变量名 方式引用。

    2)同模块中公共模块级别变量与过程级别变量同名,在过程中调用公共模块级别变量时使用 模块名.变量名 方式引用;而调用过程级变量则直接调用变量名。

    3) 其它模块引用窗体模块、工作表模块和工作簿模块中的公共级别变量时,也使用 模块名.变量名 方式引用

    • 小技巧:查看变量或过程

    当我们想要查看过程中引用的变量或其它过程,是引用哪个模块中的变量或过程时,可以选中此变量或过程,点击右键,选择"定义",将自动跳到此变量或过程的定义处,这样很方便快捷。再点击右键选择"最后位置"将返回上次光标所在的地方。

    4 小结

    其实变量很好理解,把它想象成一个容器,声明变量就是确定容器形状和容量大小,变量名就是给这个容器贴个专用的名字,数据类型就是确定这个容器是装液体还是固体或气体,变量的值就是里面放入的东西。所以切记变量就是在内存中占用的存储位置。

    本节课的重点是变量的作用域和变量的生存周期。作用域决定了生存期长短。变量的作用域和生存期决定程序对变量值的引用。

    Excel Home技术论坛

    Excel home免费在线培训中心

  • 相关阅读:
    Salesforce 大量数据部署的最佳实践
    Salesforce 数据备份和恢复小知识
    Salesforce 导入导出数据简介
    GDPR 和个人信息保护的小知识
    代码审查要点简介
    Salesforce 外部对象
    Python scipy.sparse.csr_matrix()[csc_matrix()]
    Deep Compression
    Pascal voc api
    Python内置模块-xml模块
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/2758673.html
Copyright © 2011-2022 走看看