VBA程序设计基础 2.docx
- 文档编号:13363563
- 上传时间:2023-06-13
- 格式:DOCX
- 页数:57
- 大小:39.85KB
VBA程序设计基础 2.docx
《VBA程序设计基础 2.docx》由会员分享,可在线阅读,更多相关《VBA程序设计基础 2.docx(57页珍藏版)》请在冰点文库上搜索。
VBA程序设计基础2
第一章VBA程序设计基础
●VBA程序设计集成环境
工程资源管理器、属性窗体、对象窗体、代码窗体、工具箱
立即窗口:
Debug
●基本概念
控件:
工具箱里的对象
对象:
菜单、窗体、控件等
属性:
对象的特征
Name:
名称,编程时使用Caption:
标识,给用户看
Forecolor:
前景色Backcolor:
背景色Backstyle:
透明/不透明
Width:
宽度Height:
高度
事件:
对象能识别的操作,是对象承受的操作
Click,Dblclick
方法:
对象执行的操作,动作是对象发出的
事件处理子程序
PrivateSubCommandButton1_Click()
Debug.Print1+1
EndSub
事件处理子程序的运行:
从上到下逐行执行,直至End
事件处理子程序名:
对象名_事件名
事件处理子程序启动:
由事件启动
Sub:
子程序
Private:
私有Public:
公有
●例
例11+1=?
PrivateSubCommandButton1_Click()
Debug.Print1+1
EndSub
例2窗体的上下左右移动
Left:
对象左上角顶点距屏幕左边界的距离
Top:
对象左上角顶点距屏幕上边界的距离
Left,top是数值型,可以进行算术运算
PrivateSubCommandButton1_Click()
UserForm1.Left=UserForm1.Left-50
EndSub
PrivateSubCommandButton2_Click()
UserForm1.Left=UserForm1.Left+50
EndSub
PrivateSubCommandButton3_Click()
UserForm1.Top=UserForm1.Top-50
EndSub
PrivateSubCommandButton4_Click()
UserForm1.Top=UserForm1.Top+50
EndSub
例3楷体、宋体、隶书、黑体的演示
Font:
字体属性,是文本型。
Font=”宋体”,文本型常量要用英文双引号包围
对象文本框textbox,重要属性text用来放文本
PrivateSubCommandButton1_Click()
TextBox1.Font="宋体"
EndSub
PrivateSubCommandButton2_Click()
TextBox1.Font="楷体"
EndSub
PrivateSubCommandButton3_Click()
TextBox1.Font="隶书"
EndSub
PrivateSubCommandButton4_Click()
TextBox1.Font="黑体"
EndSub
例4粗体,斜体,下划线的演示
粗体:
Fontbold斜体:
Fontitalic下划线:
fontunderline
2-1=1
2>1=True1>2=False关系运算结果是逻辑值
第二章VBA程序设计基础
2.2标准数据类型
标准数据类型是VisualBasic系统定义的数据类型,用户可以直接使用它们来定义常量和变量,表2.1列出了VB中定义的常见标准数据类型。
表2.1VB6.0的标准数据类型
类型
名称
类型符
字节数
取值范围和有效位数
整型
Integer
%
2
精确表示-32768~32767即–215~215-1范围内的整数
长整型
Long
&
4
精确表示-2147483648~2147483647即–231~231-1范围内的整数
单精度浮点型
Single
!
4
-3.402823×1038~3.402823×1038,7位有效位数
双精度浮点型
Double
#
8
-1.79769313486232×10308~1.79769313486232×10308,15位有效位数
货币型
Currency
@
8
-922337203685477.5808~922337203685477.5807
字节型
Byte
1
0~255
变长字符串
String
$
与串长有关
每个字符占1个字节,每个字符串最多可存放约20亿个字符
定长字符串
String*size
Size
size是小于65535的无符号整常数,为字符串长度
逻辑型
Boolean
2
True或False
日期型
Date
8
100.1.1~9999.12.31
对象型
Object
4
任何对象的引用
变体型
Variant
根据实际的情况分配
若存放数值类型数据,占16个字节,最大可达Double的范围。
若存放字符串类型数据,字符串长度与变长字符串相同
对于使用VisualBasic的数据,应注意以下几点:
数据的类型、在内存中的存储形式及占用的字节数、数据的取值范围、能参与的运算、数据的有效范围及其生存周期等。
VB中的整型、长整型、单精度浮点型、双精度浮点型、货币型、字节型数据统称为数值型数据。
2.3常量和变量
数学上遇到x=10x是变量,10常量
VB中:
X=10赋值,x是变量,10常量
Userform1.left=200,left是属性变量,200常量
简单变量命名:
英文字符起始,后跟上一串英文、数字、下划线
Xy,x_1a,a1是合法的简单变量名
1a,x-1,a是非法的简单变量名
常量和变量都有类型,同表2-1
Integer整型Long长整型Single单精度浮点型
Double双精度浮点型String字符串(“123”,”宋体”)
Boolean逻辑型(true/false)
Date日期型#03/10/2015#
#03/10/2015#-#03/5/2015#=5两个日期之间相差天数
2.4变量的定义
Dimxasinteger,yassingle‘dim定义
定义x为整型,y是单精度浮点型
Dimsasstring
定义s为字符串
注意:
变量应该先定义后使用
2.5赋值语句=号是赋值符号
例:
X=10把常量10赋值给变量x
语法:
左边只能是一个变量名,右边可以是一个表达式
例:
X+y=10错应改为x=10-y
X,y,c=10错应改为
X=10
Y=10
C=10
X=y=10错应改为x=10:
y=10
PrivateSubCommandButton1_Click()
DimxAsInteger,yAsInteger,zAsBoolean
x=10:
y=20
z=x=y
Debug.Printz
EndSub
运行结果:
false
10=x错应改为x=10
例:
X=10
Y=x
Debug.printx,y
结果:
1010
2.6print语句
PrivateSubCommandButton1_Click()
Debug.Print1,3+10,"abcdef"
EndSub
结果:
113abcdef
输出常量/变量和表达式的值,字符串原样照印
PrivateSubCommandButton1_Click()
Debug.Print1,3+10,"1+2"
EndSub
运行结果:
1131+2
Print语句的输出格式:
1、分段输出每段14格,段内左对齐
PrivateSubCommandButton1_Click()
Debug.print“123456789012345678901234567890”
Debug.Print1,3+10,"abcdef"
EndSub
运行结果:
123456789012345678901234567890
113abcdef
PrivateSubCommandButton1_Click()
Debug.Print"123456789012345678901234567890"
Debug.Print1,3+10,"1+2"
EndSub
123456789012345678901234567890
1131+2
2、紧凑输出不同数值型对象之间空一格
PrivateSubCommandButton1_Click()
Debug.print“123456789012345678901234567890”
Debug.Print1;3+10;"1+2"
EndSub
运行结果:
123456789012345678901234567890
1131+2
3、打印对象之间逗号、分号混用先逗号后分号,即先分段,段内紧凑
PrivateSubCommandButton1_Click()
Debug.print“123456789012345678901234567890”
Debug.Print1;3+10,3;4;5,”1+2”
EndSub
运行结果:
123456789012345678901234567890
1133451+2
PrivateSubCommandButton1_Click()
Dimxassingle,yassingle
X=10
Y=x+100
Debug.print“123456789012345678901234567890”
Debug.Print“x=”;x,”y=”;y
EndSub
程序运行结果:
123456789012345678901234567890
x=10y=110
程序的执行,从上到下逐行执行,直至end!
!
!
4、Print语句尾部有逗号或分号
PrivateSubCommandButton1_Click()
Debug.Print-1;3+10‘尾没有,/;自动换行
Debug.print3,4
EndSub
运行结果:
-113
34
PrivateSubCommandButton1_Click()
Debug.print“123456789012345678901234567890”
Debug.Print-1;3+10,‘不换行
Debug.print-3,4
EndSub
运行结果:
123456789012345678901234567890
-113-34
PrivateSubCommandButton1_Click()
Debug.print“123456789012345678901234567890”
Debug.Print-1;3+10;‘不换行
Debug.print-3,4
EndSub
运行结果:
123456789012345678901234567890
-113-34
例:
PrivateSubCommandButton1_Click()
Debug.print“123456789012345678901234567890”
Debug.Print-1,-2
Debug.print3;-4
Debug.print5,6,
Debu8g.print7;8;-9
EndSub
运行结果:
1234567890......
-1-2
3-4
5678-9
5空print语句增加一次换行
PrivateSubCommandButton1_Click()
Debug.Print"123456789012345678901234567890"
Debug.Print-1,-2,
Debug.Print
Debug.Print3;-4
EndSub
123456789012345678901234567890
-1-2
3-4
2.7VBA的运算符
●算术运算符、算术表达式
^(23:
2^3)->-(取负)->*,/->\(取整6\4=1,11/2=5)->mod(求余4mod2=0,6mod4=2)->+,-
算术运算符里没有=
运算符优先级别由高到低
算术表达式:
由算术运算符把常数、变量、函数等连接起来的式子(算术表达式里也不能有=)
算术运算、算术表达式的值是数值型
数学上:
23+ab
a2+b2转化为VB算术表达式
(2^3+a*b)/(a*a+b*b)注意:
*不能省,()配合好
VB:
2^3+a*b/a*a+b*b对应的数学表达式
ab
23+b+b2
A
PrivateSubCommandButton1_Click()
DimaAsSingle,bAsSingle
a=1:
b=2
Debug.Print(2^3+a*b)/(a*a+b*b)
EndSub
运算结果:
2
PrivateSubCommandButton1_Click()
DimaAsSingle,bAsSingle,c!
'c!
相当cassingle
a=1:
b=2
Debug.Printc=(2^3+a*b)/(a*a+b*b)
EndSub
运算结果:
false
应改为:
PrivateSubCommandButton1_Click()
DimaAsSingle,bAsSingle,c!
'c!
相当cassingle
a=1:
b=2
c=(2^3+a*b)/(a*a+b*b)
Debug.Printc
EndSub
数学算术表达式:
X3+y3
X2+2xy+y2转化为vb表达式,所有符号^,*,/,+,分数符号都要写在同一行上,一个符号占一格的中间
VB只能进行计算,不能进行代数运算
●字符串运算符和字符串表达式
+/&连接运算字符串连接运算的结果也是字符串
“1234”+”56”=”123456”
“1234”&”56”=”123456”
字符串表达式:
由字符串运算符连接起来的式子
●关系运算符和关系表达式:
>,>=,<,<=,=,<>优先级别相同
关系运算/关系运算表达式的值是逻辑型
1>2=false2>1=true
关系表达式:
由关系运算符连接起来的式子
字符串的关系比较:
“abcde”<“b”=true
单个字符的比较:
ASC码值大者
“0”<”1”<”2”<………….<”9”低
“A”<”B”<”C”<………..<”Z”
“a”<”b”<”c”<………….<”z”高
字符串的关系运算:
自左向右比较第一个不相同字符,大者为大。
“abcde”<“b”=true“ABC”<“AbC”=true
“abcd”>“abc”=true
●逻辑运算符逻辑运算/逻辑表达式的值是逻辑值
Not反->And而且/同时->or或
运算优先级别由高到低
Tandt=t
Tandf=f
Fandt=f
Fandf=f
Tort=t
Torf=t
Fort=t
Forf=f
逻辑表达式:
由逻辑运算符连接起来的式子
数学:
-5 VB: (-5 当x=-1时: (-5 当x=10时: (-5 PrivateSubCommandButton1_Click() DimxAsSingle x=-1 Debug.Print(-5 EndSub '程序的运行从上到下逐行执行,直至 数学: x<-5或x>10 VB: (x<-5)or(x>10)逻辑表达式 当x=-9时: (x<-5)or(x>10)=true 当x=0时: (x<-5)or(x>10)=false 闰年的条件: ((Xmod4=0)and(xmod100<>0))or(xmod400=0) 表达式中只有()没有[/]或{/} 当x=2012时: ((Xmod4=0)and(xmod100<>0))or(xmod400=0)=true ()->算术运算符->关系运算符->逻辑运算符 ((Xmod4=0)and(xmod100<>0))or(xmod400=0) 与下面逻辑运算表达相同 Xmod4=0andxmod100<>0orxmod400=0表达式的 运算次序: 1.三个mod运算 2.三个关系=,<>,= 3.And 4.Or PrivateSubCommandButton1_Click() DimxAsSingle x=2012 Debug.PrintxMod4=0AndxMod100<>0OrxMod400=0 EndSub 2.8常用函数 数学上: sinx VB: SIN(X)vb函数的自变量要放在()中 ●输入框函数: Inputbox() 程序的执行: 由上到下逐行执行,直至end PrivateSubCommandButton1_Click() DimxAsString x=InputBox("提示信息","标题信息","默认值") Debug.Printx EndSub InputBox()函数值是字符串 PrivateSubCommandButton1_Click() DimxAsInteger x=Val(InputBox("输入x的值","输入框","100")) Debug.Printx+10 EndSub'val()把字符串转化为数值型 注意: 输入x的值可以 1、用赋值语句x=100 2、用Inputbox()函数x=Val(InputBox("输入x的值","输入框","100")) 3、用文本框x=Val(TextBox1.Text) ●消息框函数msgbox() PrivateSubCommandButton1_Click() DimxAsInteger x=MsgBox("提示信息",2+32+0,"标题信息") Debug.Printx EndSub MsgBox()函数值是整数型 Message: 消息 消息框msgbox可以当语句用,没有返回值,用以输出结果 PrivateSubCommandButton1_Click() MsgBox"提示信息",2+16+0,"标题信息" EndSub 注意: 2+16+0,"标题信息"可以省略 PrivateSubCommandButton1_Click() DimxAsInteger x=10 MsgBox"x="+Str(x)'str()把数值转化为字符串 EndSub '"x="+Str(x): "x=10"作为提示信息 消息框输出结果: x=10 标签框: 它的Caption属性用来显示一段文字 输出x的值: 1.debug.printx 2.文本框输出 PrivateSubCommandButton1_Click() DimxAsInteger x=10 textbox1.text=Str(x)'str()把数值转化为字符串 EndSub 3.用msgbox输出 PrivateSubCommandButton1_Click() DimxAsInteger x=10 MsgBox"x="+Str(x)'str()把数值转化为字符串 EndSub 4.标签框输出 PrivateSubCommandButton1_Click() DimxAsInteger x=10 Label1.Caption="x="+Str(x)'str()把数值转化为字符串 EndSub PrivateSubCommandButton1_Click() DimxAsInteger x=10 Debug.Printx TextBox1.Text="x="+Str(x) Label1.Caption="x="+Str(x) MsgBox"x="+Str(x) EndSub ●其它内置函数函数的自变量用() 数学函数 Abs(x)debug.printabs(-5) PrivateSubCommandButton1_Click() Debug.PrintAbs(-5) EndSub PrivateSubCommandButton1_Click() Debug.PrintSin(30*3.14159/180) EndSub 字符串 PrivateSubCommandButton1_Click() Debug.PrintLeft("12345",3) EndSub 2.7.6常用内部函数 1.数学函数 (1)Abs(x): 返回x的绝对值。 如Abs(-5)的值为5。 (2)Exp(x): 返回以e为底的x次幂,即ex。 如Exp (1)的值为2.71828。 (3)Log(x): 返回x的自然对数。 如Log(2.7182818)值为1。 (4)三角函数: 正弦函数Sin(x)、余弦函数Cos(x)、正切函数Tan(x)和反正切函数Atan(x)。 在三角函数中的自变量是以弧度为单位。 如Sin60°应写为sin(60*3.14159/180)。 其他三角函数可以由这四个函数表示,如余切函数可以表示为: 1/Tan(x)。 (5)Sgn(x): 符号函数,当x>0时,Sgn(x)的值为1;当x=0时,Sgn(x)的值为0;x<0时,Sgn(x)的值为-1。 (6)Sqr(x): 返回x的平方根,如Sqr(16)的值为4。 要求自变量x>=0,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VBA程序设计基础 VBA 程序设计 基础