哎呀暂时没有时间排版,先记录下来吧。
1、枚举(Enum)类型 应用
public Enum 名称
设置
End Enum
2、Option Explicit 语句作用:要求该模块中所有变量必须先进行生声明再使用
3、过程
VBA中
sub是通用过程的一种常见过程,无返回值
function过程 有返回值,可以作为excel中的内部的函数
dim是声明的意思
VB中 逗号 分号 冒号的用法和区别:
逗号
逗号用在print语句中,以标准格式用来分隔各输出项,即每个输出项的宽度占18个字符位置,这样每行分成四个区。
分号
分号也用在print语句中,以紧凑格式用来分隔各输出项,输出的字符之间留一个空格位,输出的数值之间除留一个空格位外还留一个符号位。
冒号
冒号用在语句之间,将一个物理行分成多个逻辑行,即多个语句占一行,其间用冒号分隔。
4、过程;
public:公共过程,过sub前边省略,则默认为public,在整个
private:局部过程,只在模块内能被调用。
局部过程无法像公共过程那样使用宏对话框来执行
friend:该关键字只能在类模块中使用,其在整个过程都可见,但是对对象实例的控制是不可见的。
static:调用过程时,保留sub过程中的局部变量,
调用过程两种格式
call 过程名(参数)
过程名 参数
5、传递参数:
ByRef:表示地址传递,默认情况也是这个
ByVal:参数传递。
变量声明:
变量声明: 显式声明 隐式声明
显示声明:在变量使用之间用dim、 staic、 public、 private 语句声明
dim 可一次声明多个变量,声明后VB会自动为该变量赋初值。
若变量是数据型,则赋初值为 0
若变量是字符型,则赋初值为 空字符串
若未定义数据类型,则缺省为Variant变体型
隐式声明:在使用一个变量之前不声明,而是用一个特殊的类型符号加在变量名后面来说明数据类型
% 表示 integer ! 表示 single
& 表示 Long # 表示 Double
$ 表示 String @ 表示 Currency
隐式说明如果未含类型符号,则表示为Variant 类型
强制声明:Option Explicit 语句 强制变量在使用前声明
声明变量:
1、隐式声明:不经声明直接使用;
2、显式声明:变量经声明后再使用。
强制声明的两种方式:
(1)工具——选项——编辑器——勾选“要求变量声明”——重启VB;
(2)窗体对象列表选择通用,在声明区中声明option explicit。
使用dim语句声明变量(也可以用来声明数组)
1、声明一个变量:
dim a as string
2、声明多个变量:
dim m as integer,n as integer
3、声明多个不同类型的变量:
dim myvar , mychoice as boolean,mybirth as date
如果dim a 这种没有as的形式,则将a声明为对象变量,对象变量只有在程序运行后才知道对象类型。
全局变量的声明:
在标准模块中声明,关键字public和clobal声明,可以被工程中任一窗体,任一模块中的任一过程或函数使用,关键字必须相同
Application 是位于顶层的对象,excel都是从他开始
wookbook:
Workbook.Add 创建新的工作簿
VBA编程中的With语句
With语句可对某个对象执行一系列的语句,不必重复指出对象的名称。 其语法形式为:
With~对象引用>
<语句1>
End With
例如,要改变一个对象的多个属性,可在With控制结构中加上属性的赋值语句,只需引用对象一次而不必在每个属性赋值时都引用它。例如:
With MyLabel ’给MyLabel对象的多个属性赋值
.Height=2000
.Width=2000
.Caption=\”This is MyLabel\”
End With
注 :由于程序进入With块后,对象就不能改变了,因此不能用一个With语句来设置多个不同的对象。可将一个With块放在另一个之中,产生嵌套的With语句。但在内层的With块中,要使用完整的对象引用来指出在外层的With块中的对象成员。
关于Vb/Vba中两种参数传递方式.Vb/Vba有两种,一种是ByVal,另一种是ByRef,下面我就来给各位同学详细介绍关于这们两的一些用法。
ByVal与ByRef的区别
说去二者之间的区别,就在于其传递的是什么,也许这句话很模糊,我们来做一下解释。
1、ByVal-按值传递,也就是说,我们传递给函数是一个单纯的数值过去,如下代码来帮助我们理解:
代码如下 复制代码
Sub Run()
Dim i As Integer
i = 1
Add i
MsgBox i
End Sub
Sub Add(ByVal i As Integer)
i = i + 3
End Sub
上述代码,最后对话框中显示的i值还是1,因为编译器,或者是说Vba的解析器会对其传递的i创建一个副本,用于Add过程中的计算。
2、ByRef-按地址传递,类似于C、C++或者是ObjectPascal等语言中的指针,其会传递一个全局的内存地址给函数(过程),当函数在运算过程中修改了你所传递的参数时,那么这个值会被延伸下去,为了便于理解,大家来看一下如下的代码:
代码如下 复制代码
Sub Run()
Dim i As Integer
i = 1
Add i
MsgBox i
End Sub
Sub Add(ByRef i As Integer)
i = i + 3
End Sub
这段代码与,前一段代码只有一个区别,就是将Add过程中参数i的传递方式由ByVal修改成了ByRef,但运算结果会完全不同,Msgbox对话框,最后给出的结果是4。
通过上述两个代码,大家是否对ByVal与ByRef这两种参数传递方式有了比较好的理解呢?
注意事项
值得我们各位童鞋注意的是,Vb/Vba默认的参数传递方式为ByRef,也就是说ByRef是可以省略的,这个与其他的语言不太相同。