Visual Basic第一章
visual basic简介
发展史
- 1991年微软推出1.0,之后几年退出2.0~5.0
- 1998年推出了6.0,加入了数据库管理,网络编程模块
- 2001年推出了跨版本升级.net
编程语言排行
![b923b3de81882d8950f1d49339b647b5.png](https://i-blog.csdnimg.cn/blog_migrate/81de50c86cf14d38012718fd3eb1d4e8.png)
版本分类
- 学习版(包含所有内部控件,网络,选项卡和数据绑定控件)
- 专业版(在学习版的基础上加入了activeX控件,ISS应用程序设计器,集成了可视化数据工具和数据环境,Active数据对象和DHTML页设计器)
- 企业版(在专业版的基础上加入了Back Office工具,例如SQL Server****、Microsoft Transaction Server、IIS、Visual SourceSafe等。)
语言特点
- 可视化编程(类似于scratch模块拖动编程)
- 事件驱动机制(不同组件有相对应的事件触发机制)
- 面向对象的程序设计语言(每个控件属性自我封装)
- 支持多数据库访问机制
如何学好vb
- 兴趣和坚持
- 实践出真知
- 恰当的提问
vb启动
- 通过开始菜单启动
- 快捷方式打开
vb退出
- 点击关闭按钮
- 点击文件---->退出
- 快捷键Alt+Q
工具介绍
- 工具栏
- 属性窗口
管理工程
- 新建保存工程
- 新建工程
- 保存工程
- 新建窗体
- 新建工程
- 生成可执行文件
第一个应用程序的开发
开发步骤
-
创建应用程序界面
-
设置控件属性
-
编写代码
-
调试运行程序
工具模式
- 开发模式:修改控件,属性及代码
- 运行模式:只能看不能修改
- 中断模式:检查,调试,重置,单步执行或继续执行程序
vb工程组成
-
跟踪所有部件的工程文件(.vbp)
-
窗体文件(.frm)
-
窗体所对应的二进制文件(.frx)
Visual Basic第二章
类和对象
名词 | 解释 | 类比 |
---|---|---|
类 | 模板 | 电话机图纸 |
对象 | 根据模板生成的实际存在的个体 | 电话机 |
属性 | 个体的各项参数 | 重量,价格… |
方法 | 所能执行的功能 | 打电话,接电话 |
事件 | 触发的条件 | 电话铃响 |
属性值的修改
-
静态修改:通过程序窗口设置的方式进行修改
-
动态修改:使用代码的形式对控件的属性进行修改
Text1.text = "Hello world" '将Text1文本框中的内容修改为Hello World'
事件和方法
- 事件(触发条件):不同控件拥有不同的触发机制,例如按钮可以单机双击,文本框可以监听内容修改获取焦点等事件。
- 方法:事件出发后要执行的操作,例如单击按钮(事件)后文本框内容修改(方法)
窗体
-
组成
-
标题栏:标题内容,最小化,最大化,关闭按钮
-
窗体主体:自定义各种控件
-
-
窗体常见属性
属性名 说明 caption 修改窗体标题 name 窗体名称(编写代码查找窗体使用) MaxButton 最大化按钮 ControlBox 系统菜单栏 BackColor 背景颜色 BorderStyle 窗体边框样式 Height 窗体高度 -
窗体常用事件
事件 触发时机 Click 鼠标单击 DbClick 鼠标双击 Load 窗体打开后触发 Unload 窗体关闭时触发
控件与焦点
- 焦点:控件被选中的状态
- 获得焦点的方式
- 通过Tab键切换
- 通过鼠标选择
- 通过代码设置(控件名.setFocus)
控件的绘制
- 鼠标单击---->绘制控件(配合Ctrl可以实现重复绘制)
- 鼠标双击控件------>在窗体中间自动生成一个默认大小的控件,如果同时添加多个控件会出现控件重叠的情况。
控件大小调整
- 选择对应的控件,通过设置属性(height,weight)的方式该表大小
- 鼠标拖动周围小点的方式改变控件大小
控件位置调整
- 1.使用left,top属性设置控件位置
- 使用鼠标拖动改变控件位置
- Ctrl+方向键修改控件位置
布局调整
- 选中调整的控件,点击格式调整对齐方式。(配合Shift选中所有控件或通过鼠标框选)
- 格式中的对齐,统一格式,水平间距,垂直间距调整布局。
控件常用属性
属性名 | 说明 |
---|---|
caption | 标题/显示内容 |
name | 控件名称(编码时定位控件使用) |
enabled | 控件是否可用(置灰状态) |
visible | 控件是否可见(隐藏控件) |
font | 设置字体样式 |
height/width | 设置控件尺寸 |
top/left | 设置控件位置 |
forecolor | 设置前景色(窗体中小点的颜色,控件中文字颜色) |
backcolor | 设置背景颜色 |
标题栏—lable
-
常见属性
属性 说明 alignment 设置标题内容在控件中的位置
left 靠左
right 靠右
center 居中autosize 设置控件尺寸跟随文字内容自动调整 wordwrap 控件宽度固定,高度跟随文字变化子自动调整 ❤使用wordwrap前autosize属性值必须为true
文本框
-
常用属性
属性 说明 locked 锁定文本框内容(光标闪动,文本内容无法编辑) enabled 设置文本框是否可用 passwordchar 设置文本加密(输入字符为加密显示字符) multilint 设置文本内容最大32kb scrollbars 设置文本框滚动条 0:没有(默认值) 1:水平方向滚动条 2:垂直方向滚动条 3:水平垂直都有(只在一行显示,需要回车换行) ❤先将multiline设置为true,scrollbars属性才能生效。
-
常用事件
事件 说明 Change 文本框内容发生修改时触发 GotFocus 文本框获得焦点时触发 LostFocus 文本框失去焦点时触发 -
通过代码使文本框获得焦点
Text1.SetFocus
-
文本框常用方法
方法 说明 selStart 光标此刻所处的位置 selLength 选中字符的长度 selText 选中字符
按钮
-
常用属性
属性 说明 Caption 设置按钮显示内容 Default 值为True时,回车键控制按钮点击 Cancel 值为True时,Esc键控制按钮点击 -
设置按钮图标
- 将Style属性设置为1–Graphical
- 设置picture属性选择图片(默认\Common\Graphics\Icons目录下有系统提供的图标)
-
按钮增加动态提示
ToolTipText 设置提示内容 -
按钮常见事件
Click 鼠标单击
通用模块(重写sendkeys)
Public Sub Sendkeys(text$, Optional wait As Boolean = False)
Dim WshShell As Object
Set WshShell = CreateObject("wscript.shell")
WshShell.Sendkeys text, wait
Set WshShell = Nothing
End Sub
Visual Basic第三章
模块—vb程序中的容器
- 窗口模块:程序有不同多个窗体组成,每个窗体包含不同的控件及代码
- 标准模块:程序代码的共享,可以包含全局变量、常量及外部过程
- 类模块:创建对象的模板
过程
概念:具有特定功能的代码集合
分类 | 说明 |
---|---|
事件过程 | 触发某个事件执行的代码 |
通用过程 | 所有窗体和控件可共享的代码 |
代码窗口
代码窗口的使用
- 双击控件
- 工程资源管理器
- 选择控件鼠标右击
代码窗口的查看
-
过程查看(单模块查看)
-
全模块查看(所有控件及通用代码)
代码窗口的智能化编辑
- 自动语法检查
- 自动格式排版
- 语法提示
编码规则
- 不区分大小写
- 同一行可书写多条语句,使用:分割(不提倡)
- 每行最多1024个字符,续行符“_”
- 数字除了可以用默认的十进制表示外,还可以用其他进制: &H9A、 &O76
- 代码要有缩进
注释
概念:有利于程序的阅读,维护和调试,不影响代码运行,使用单引号
- 在代码尾部添加,有续行符的不可以
- 添加多行注释时可使用工具栏下的注释块功能
关键字
visual basic中保留的字母作为程序中固有含义的标识符,不能被重新定义。
标识符
-
定义:标识符是用户在编程时定义的名称,包括常量,变量,过程,函数和类等,在实际操作这些变量的时候我们需要给每个变量起一个名字以表示区分。这就像在日常生活中每一个人,每一个商店都会有一个名字一样。
-
命名规则:
- 由大小写英文,数字,下划线(_)组成,且以字母开头(可使用汉字,不推荐)
- 长度不能超过255
- 不能使用关键字,不能与当前模块中已有方法和属性名重复
- VB不区分变量名的大小写,一般变量名首字母用大写,其余用小写字母表示;常量全部用大写字母
-
示例
-
Const PI = 3.141592653 #PI为常量标识符,代表圆周率 Dim Name as String #Name为变量标识符,表示姓名
-
数据类型
数据类型 | 关键字 | 类型符 | 前缀 | 占字节数 | 应用 |
---|---|---|---|---|---|
字节型 | Byte | 无 | byte | 1 | 存储二进制数据,范围较小,不能存放负数 |
逻辑型 | Boolean | 无 | bln | 2 | 只有 True 和 False 两种取值,用于逻辑判断 |
整型 | Integer | % | int | 2 | 保存整数,取值范围小,用于不带小数的数据 |
长整型 | Long | & | Ing | 4 | 取值范围大于整型,其余同上 |
单精度型 | Single | ! | sng | 4 | 保存浮点实数,运算可能会产生误差 |
双精度型 | Double | # | dbl | 8 | 取值范围大于单精度型,其余同上 |
货币型 | Currency | @ | cur | 8 | 保存定点实数,主要用于货币计算 |
日期型 | Date | 无 | dtm | 8 | 保存日期与时间数据 |
字符型 | String | $ | str | 可变 | 保存字符串数据,分为定长与变长两种 |
对象型 | Object | 无 | obj | 4 | 存储32位的地址数据,该地址可引用应用程序中的对象 |
变体型 | Variant | 无 | vnt | 可变 | 可以保存所有系统定义的数据类型,主要是用于未定义变量的默认数据类型,其数据类型的处理完全取决于上下文 |
常量
在程序运行过程中不变的量,例如圆周率
-
直接常量
-
符号常量
Const 常量名 [AS 类型] = 值 | 表达式
Const PI = 3.14159
-
系统常量
变量
在程序运行中其存储的值可以改变
命名规则
- 必须以字母或汉字开头,由字母、汉字、数 字或下划线组成,长度小于等于255个字符
- 不能使用VB中的关键字
- VB不区分变量名的大小写,一般变量名首字母用大写,其余用小写字母表示;常量全部用大写字母
非法变量名
- 3xy ’ 数字开头
- y - z ’ 不允许出现减号
- Wang Ping ’ 不允许出现空格
- Dim ’ VB.NET的关键字
- Cos '标准函数名
声明变量
-
显式声明
Dim 变量名 [As 类型]
Dim m As Integer '定义整型变量m' Dim m,n As Integer, x,y As Single '创建了变体型变量m、x,整型变量n和单精度型变量y
强制显示声明:**工具→选项→编辑器→ **要求变量声明
-
隐式声明
x = "123" '定义变体型变量x'
-
类型声明符
strName$ = "张三" '定义一个字符型变量strName' Dim age% '定义一个整型变量age'
运算符与表达式
- 运算符分类
- 算数运算符
- 字符串运算符
- 关系运算符
- 逻辑运算符
算数运算符(设ia=3)
❤注意❤
算数运算符两边应是数值型,若是数字字符(“123”)或逻辑型,则自动转换为数值型后再运算
30-True '结果为31 True转为数值-1
False + 10 + "4" '结果为14,False转换为0'
字符串运算符
操作符 | 说明 |
---|---|
+ | 1)数值型:则进行算术加运算 2)一个为数字字符,另一个为数值,自动将数 字字符转换为数值后进行算术加 3)一个为非数字字符,另一个为数值型,出错 4)两边必须都为字符型才能进行拼接 |
& | 将两边转换为字符串后进行拼接 |
12 + 12 '数值型24'
12 + "12" '数值型24'
"中国" + 12 '报错'
"123" + "456" '字符型123456'
12 & 12 '字符型1212'
12 & "True" '字符型12True'
关系运算符
也叫比较运算符,双目运算符,结果为布尔型数据。
字符类型数据比较时只比较相同位数的ASCII值
运算符 | 例 | 结果 |
---|---|---|
= | " ABCDE " = " ABR " | False |
> | " ABCDE " > " ABR " | False |
>= | 32>=12 | True |
< | 23<3 | False |
<= | 3<=23 | True |
<> | " abc" <> "abcde " | True |
逻辑运算符
除Not是单目运算外,其余都是双目运算。
Eqv | 等价 | 5 | 两个操作数相等时才为真 | (3>2)Eqv (“a”>“b”) | F |
---|---|---|---|---|---|
Imp | 蕴涵 | 6 | 第一个操作数为真,第二个操作数为假,结果才为假,其余为真 | (3>2)Imp(“a”>“b”) | F |
运算符的优先级
算术运算符 > =算术运算符>比较运算符 > 逻辑运算符
数组
具有相同名字,下标值不同的一组变量称为数组变量,简称数组
数组必须先声明,后使用
❤数组下标默认从0开始❤
分类
-
静态数组
数组的维数与下标的范围在声明时确定
声明:Dim 数组名(下标上界) As 数据类型
Dim sngCj(45) As Single '具有46个元素的一维数组' Dim intA(3,4) As Integer '声明一个二维数组,共有20个元素' Dim BirthDay(1 To 10) As Date '声明下标从1到10的数组'
-
动态数组
声明数组时不指明下标的大小(省略括号中的下标),当需要使用时,再用ReDim语句重新定义其大小
声明:Dim 数组名() As 数据类型
重新分配:ReDim 数组名(下标数)
Dim intRs() As Integer
ReDim intRs(12)
intRs(0) = 1
intRs(1) = 2
print intRs(0) '# 1'
print intRs(1) '# 2'
'使用Presever源数据得以保留'
ReDim Presever intRs(6)
print intRs(0) '# 1'
print intRs(1) '# 2'
'使用ReDim改变数组大小会使原数组的内容丢失,使用Preserver关键字可保留原数组内容,不能改变源数据类型
ReDim intRs(6)
print intRs(0) '# 0'
print intRs(1) '# 0'
二维数组
定义:Dim 数组名(行数,列数) As 数据类型
Dim MyArry(2,4) As Integer
'二维数组元素个数为3*5个,行数下标0~2,列数下标0~4'
修改数组下标起始值
Option base 0|1 '设置下标起始值'
'该语句必须放置在模块所有过程和所有数组声明之前,而且一个模块中只能出现一次'
'LBound(数组名) 返回数组指定维的下标下限'
'UBound(数组名) 返回数组指定维的下标下限'
Dim Lower, Uower '定义变量显示下标上下界
Dim MyArray(20), TwoArray(3, 4) '声明数组
Dim ZoreArray(0 To 5) '定义数组下标从0开始
'使用LBound函数查看数组下标下限值'
Lower = LBound(MyArray) '返回0'
Lower = LBound(TwoArray) '返回0'
Lower = LBound(ZoreArray) '返回1'
'使用UBound函数查看数组下标上限值'
Uower = UBound(MyArray) '返回20'
Uower = UBound(MTwoArray) '返回4'
Uower = UBound(ZoreArray) '返回5'
数组的使用
访问:数组名(下标值)
赋值:数组名(下标值) = 表达式|值
'通常数组配合循环联合使用
Private Sub Form_Click()
Dim intA(10) As Integer
Dim i As Integer
For i = 0 To 10
intA(i) = 1 '对每个数组元素赋初值1
Print intA(i) '输出数组元素的值
Next i
End Sub
❤数组的访问不能超过数组下标上界,否则会报数组越界错误
Dim intA(10) As Integer
Print intA(11) '访问下标不存在
标准(内部)函数
概念
实现某种特定功能或能实现某种运算的代码块,例如计算平均值,求和等操作
分类
-
数学函数
函数名 含义 示例 结果 Abs(N) 取绝对值 Abs(-3.5) 3.5 Cos(N) 余弦函数 Cos(0) 1 Exp(N) 返回e的N次幂 Fix(N) 取整 Fix(-3.5) -3 Log(N) 自然对数 Log(10) 2.3 Int(N) 取小于或等于N的最大整数(向下取整) Int(-3.5 -4 Rnd[(N)] 产生随机数 Rnd [0,1)之间的数 Round(N) 四舍五入取整 Round(3.5) 4 Sin(N) 正弦函数 Sin(0) 0 Sgn(N) 符号函数 Sgn(-3.5) -1 Sqr(N) 平方根 Sqr(9) 3 Tan(N) 正切函数 Tan(0) 0 -
转换函数
函数名 功能 示例 结果 Asc© 字符转换成ASCII码值 Asc(“A”) 65 CDate 转换成日期型 CDate(“2003/11/13”) 2003-11-13 Chr(N) ASCII码值转换成字符 Chr$(65) “A” Hex(N) 十进制转换成十六进制 Hex(100) 64 Lcase$© 大写字母转为小写字母 Lcase$(“ABC”) “abc” Oct](N) 十进制转换成八进制 Oct$(100) “144” Str(N) 数值转换为字符串 Str$(123.45) “123.45” Ucase© 小写字母转为大写字母 Ucase$(“abc”) “ABC” Val© 数字字符串转换为数值 Val(“123AB”) 123 -
字符串函数
函数名 功能 示例 结果 Right(C,N) 取字符串右边n个字符 Right(“ABCD”,3) “BCD" RTrim© 去掉字符串右边空格 RTrim(“ABCD”) “ABCD” Space(N) 产生n个空格的字符串 Space(3) “" Split(C[,D]) 将字符串分隔成字符数组。与Join作用相反 S=Split(“123,ab”,“,”) S(0)=“123” S(1)=“ab" String(N,C) 重复首字符n次 String(3,“ABC”) “AAA” StrReverse© 将字符串反序 StrReverse(“ABCD”) “DCBA” InStr([N,]C1,C2[,M]) 从n开始,在C1中找C2 InStr(2,“EFABCDEFG”,“EF”) 7 Left(C,N) 取字符串左边n个字符 Left(“ABCDE”,3) “ABC” Len© 字符串长度 Len(“AB教育”) 4 Trim© 去掉字符串两边空格 Trim(“ABCD”) “ABCD” Mid(C,N1[,N2]) 取字符子串 Mid(“ABCDE”,2,3) “BCD” Replace(C,C1,C2) 用C2替代C1 Replace(“ACDABCD”,“CD”,“3”) “A3AB3” -
日期函数
函数名 功能 示例 结果 Date[()] 返回系统日期 Date Day(C|N) 返回日期代号(1~31) Day(“2003,05,01”) Hour(C|N) 返回小时(0~24) Hour(#1:12:56PM#) Minute(CN) 返回分钟(0~59) Minute(#1:12:56PM#) Month(CN) 返回月份代号(1~12) Month(“2003,05,01”) Now 返回系统日期和时间 Now Second(CN) 返回秒(0~59) Second(#1:12:56PM#) Time[()] 返回系统时间 Time Year(CN) 返回年代号(1753~2078) Year(365)
-
Shell函数
作用:调取应用程序
格式:Shell(应用程序.exe|.bat|.com)
i=Shell( "calc.exe") '打开计算器' '调用成功返回任务表示ID,失败返回0'
-
格式输出函数
| |
| Hour(C|N) | 返回小时(0~24) | Hour(#1:12:56PM#) | |
| Minute(CN) | 返回分钟(0~59) | Minute(#1:12:56PM#) | |
| Month(CN) | 返回月份代号(1~12) | Month(“2003,05,01”) | |
| Now | 返回系统日期和时间 | Now | |
| Second(CN) | 返回秒(0~59) | Second(#1:12:56PM#) | |
| Time[()] | 返回系统时间 | Time | |
| Year(CN) | 返回年代号(1753~2078) | Year(365) | |
-
Shell函数
作用:调取应用程序
格式:Shell(应用程序.exe|.bat|.com)
i=Shell( "calc.exe") '打开计算器' '调用成功返回任务表示ID,失败返回0'
-
格式输出函数