vba中的变量可以分为哪几种,vba 二维常量数组整体赋值

目录

1 数据类型

2 变量的声明

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

4 把数据存储到变量里(赋值操作)

5 常量

6 变量作为过程或函数的参数

7 变量在公式中的使用

8 VBA中的数据结构

9 颜色属性的赋值

1 数据类型

程序语言中定义的数据类型,包括定义可以取值的范围、需要的存储空间、以及可以进行的一些操作(可以使用的操作符)。

VBA处理的数据:变量、常量、数组、集合、字典与对象属性

1.1 非对象变量

上面的基本数据类型,除Object、Variant外,都是非对象变量;

1.2 对象变量

对象变量也就是Object变量或特定的对象变量,如Border、CommandBar、Comment、Dialogs、Error、Filter、Font、Hyperlink、Icon、Name、Page、Pane、Parameter、PivotField、PivotFilter、PivotItems、Range、Shape、sheets、Smarttag、ThisWorkbook、Window、Workbook、Worksheet等。

对象变量保存着对象的引用指针。

1.3 枚举类型

当一个变量只有几种可能的值时,可以将其定义为枚举类型。枚举类型数据是将变量的所有可能值一一列举出来,属于该枚举类型的变量只能取枚举的某一个值。插入一个类模块,在其中输入:

Public Enum week

星期日

星期一

星期二

星期三

星期四

星期五

星期六

End Enum

在模块中使用枚举类型:

Sub useEnum()

Dim myWeek As week

myWeek = 星期二

Debug.Print (myWeek)

End Sub

运行后在立即窗口中显示数据:2

1.4 自定义数据类型

VBA中的自定义数据类型是一个多种数据类型的集合。

在普通模块的最前面输入:

Type student

name As String

id As Integer

age As Integer

End Type

使用自定义类型:

Sub useSelfType()

Dim stu As student

stu.name = “wwu”

stu.id = 2012

Debug.Print (stu.name)

End Sub

运行后在立即窗口中显示数据:wwu

2 变量的声明

2.1 Dim 变量名 As 数据类型

2.2 Dim str As String*10 ‘定长类型,最多只能存储10个字符

2.3 Dim str$ ‘数据类型使用符号表示,$表示字符串类型

2.4 Dim var ‘未指定数据类型时,默认为Variant

2.5 同一条Dim语句声明多个变量时,使用逗号分隔;

2.6 变量不声明也是可以使用的,可以使用Option Explicit语句要求使用变量时强制要求先声明。

2.7 函数过程也可以声明数据类型:

[Public | Private][Static] Function 函数名([参数列表]) [As 数据类型]

2.8 对象变量的声明,如果对象变量只有在程序运行时才能知道引用的对象类型,则可以将对象类型声明为Object,如有以下三种定义对象的方式:

Dim obj

Dim obj As Object

Dim obj As Range

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

3.1 变量的作用域

变量的作用域是指变量在程序中的可见范围。

在一个工作簿的工程中最可插入多个模块,一个模块可以包含多个多个过程。

3.1.1 单个过程

在一个过程中使用Dim或Static语句声明的变量,作用域为本过程,即只有声明变量的语句所在的过程可以使用它,这样的变量称为本地变量

3.1.2 单个模块

在模块的第一个过程之前使用Dim或Private语句声明的变量,作用域为声明变量的语句所在模块里的所有过程,即该模块里所有的过程都可以使用它。这样的变量称为模块级变量

3.1.2 所有模块

在模块的第一个过程之前使用Public语句声明的变量,作用域为全部模块,即全部模块里的过程都可以使用它。这样的变量称为公共变量

3.2 变量的生存周期

变量的生存周期是指变量能够在内存中保存的时间。如当程序进入变量所在的过程时为其分配内存单元,当退出该过程时,该变量占用的空间单元将被释放,其值也将消失。如果再次进入该过程,变量将会重新初始化。这样的变量称为动态变量,使用Dim语句声明的变量都属于动态变量

如果在程序运行进入变量所在的过程后,即使退出了过程,该变量的值仍然被保留,也就是变量所占用的内存单元不释放。当再次进入该过程时,变量值能够再次被使用,这样的变量称为静态变量。静态变量使用Static关键字,如:

Sub useStaticVar()

Static sum As Double

sum = sum + 5

Debug.Print (sum)

End Sub

上面的过程运行4次后,立即窗口显示为:20

4 把数据存储到变量里(赋值操作)

把数据存储到变量里,也就是给变量赋值。

4.1 非对象变量赋值

[Let] 非对象变量名 = 数据

数据如果是文本,需要使用双引用界定字符串,如果是日期,需要使用两个#来界定日期;

4.2 对象变量赋值

Set 对象变量名称 = 具体对象

4.2.1 对象变量.方法,形成一条单独的语句;

4.2.2 对象变量.属性,可以作为左值,也可以作为右值用在表达式中。如单元格的value属性(用在表达式中可以省略关键字value)、name属性(如工作簿、工作表都有name属性,Font也有name属性)。

“=”左边必须是常量名、变量名或对象属性名,不能是表达式;

“=”左边的变量的数据类型必须和右边表达式计算结果的数据类型兼容。或者数据类型相同,或者能够进行隐式的数据类型转换。

4.3 对象的逐层引用

活动工作表中的对象可以直接引用,也可以使用ActiveCell直接引用活动单元格。

Application→Workbook→Sheet(chart)→Worksheet→Range(shapes、Hyperlinks、Names)→Font(Border、Interior)

4.4 索引中使用变量

Integer变量可以用作工作簿、表的索引、Range对象的行索引、Cells对象的行、列索引、行或列的索引、数组的索引;

String变量可以用作Range对象的整体引用、Range对象的列索引、cells对象的列索引,字典的键(索引);

Range的列通常用字母来表示,但也可以通过下面的形式转换为数字来表示:

Range(Cells(1,1),Cells(10,5)).select

‘等价于:Range(“A1:E10”)

5 常量

常量通常用来存储一些固定的,不会被修改的值,如圆周率、个人所得税税率等。

可以理解为常量是只能取一个固定值的变量,枚举类型是指可以取若干可数的值的变量,而普通变量是可以取无限个值的变量。

常量一般是在声明时同时赋值。

同样的,常量与变量一样也有相同定义的作用域。

5.1 字面常量

5.1.1 字符常量

字符常量使用双引号界定,如果在字符串中包含有一个双引号,需要用两个双引号表表示一个双引号,如:

Sub charConst()

Dim s As String

s = “Henry say:””hi!”””

Debug.Print (s)

End Sub

上面过程运行后,立即窗口显示:Henry say:”hi!”

5.1.2 日期常量

日期常量使用两个#符号来界定,如:

Sub dateConst()

Dim d As Date

d = #2/29/2016#

Debug.Print (d)

End Sub

上面过程运行后,立即窗口显示:2016/2/29

其它的字面常量还有数值常量、布尔常量等。

5.2 符号常量

使用符号常量比直接使用字面常量更直观、更易于程序的修改维护、也更容易避免错误。

Const 常量名称 As 数据类型 = 数值

Const PI As Double = 3.14

5.3 系统常量

系统常量是VBA系统内部提供的一系列具有各种不同用途的符号常数。如用vbRed表示红色,比使用数值0xFF0000要直观易懂。

6 变量作为过程或函数的参数

VBA过程和函数都可以使用参数。参数相当于一个接口中的选项,为用户提供自定义空间,从而提升其灵活性,同时简化代码。

参数可以用关键字Optional定义可选参数,可以使用关键字ParamArray定义不确定数量的参数。

过程和函数定义时使用的参数称为形参,形参相当于变量的声明,过程调用时,实参代替形参,相当于给形参赋值。

如:

var = var * 3

Debug.Print (var)

End Sub

过程调用:

Sub usePara()

Dim b As Integer

b = 4

Debug.Print (b)

Call defPara(b)

Debug.Print (b)

End Sub

运行usePara()后,立即窗口显示为:

4

12

12

6 变量在公式中的使用

变量在公式中与字符串连接时使用&符号,如:

Range(col & lastR + 1).Formula = “=sum(“& col & “2:” & col & lastR & ”)”

7 VBA中的数据结构

VBA中的数据结构主要有数组、字典、集合,这些数据结构的数据直接保存在内存(不同于工作簿中的数据是保存在外部存储器,数据处理时,需要由外部存储器输入到到内存中),直接用数据结构表示数据时,不需要额外的数据传输,有较高的数据处理效率。

数据结构与工作簿数据可以相互赋值操作:

变量 ↔ 单元格值(Range、Cells);

字符串变量↔工作簿名、工作表名、字体名;

数组 ↔ 单元格区域

字典↔多行二列区域

集合↔单行或单列

数组的转置:WorksheetFunction.Transpose (arr)

8 颜色属性的赋值

[A1].Font.ColorIndex = 3

[A1].Interior.Color = RGB(255, 255, 0)

-End-

原创文章,作者:芒小种,如若转载,请注明出处:http://www.fhgg.net/shenghuobaike/27933.html

本文来自投稿,不代表【食趣网】立场,如若转载,请注明出处:http://www.fhgg.net/

(0)
上一篇 2023年2月27日 下午5:32
下一篇 2023年2月27日 下午5:37

相关推荐

发表回复

登录后才能评论