VB笔记 (教材蓝本:沈大林《Visual Basic 6.0 基础与案例教程》第二版) 班级 姓名 ▲ VB程序设计步骤: 1 新建工程 2 设计界面 3 设置属性 4编写代码 5 运行调试 6 保存、生成 ▲ VB工程的相关文件 .frm 窗体文件 .vbp 工程文件 .vbw 工作区文件 .frx 数据文件 .bas 标准模块文件 .cls 类模块文件 .vbg 工程组文件 .res 资源文件 ※注意:一个VB工程必须包含窗体文件(.frm) 和工程文件(.vbp)。 ▲ 如何将VB程序保存到另一个位置 1、*.frm另存为(另存窗体文件) 2、文件→工程另存为(另存工程文件) ※注意:必须先另存窗体文件再另存工程文件,否则保存后打开vbp工程文件会提示“找不到路径……”。 (如果报“找不到路径……”错误,可以用记事本打开vbp文件,将第二行“Form=”后面的路径部分去掉只留文件名Form=Form1.frm就可以解决) ▲ 如何添加窗体 (工程资源管理器中)右键单击工程名→添加→添加窗体 ▲ 如何设置启动对象 右键单击工程名→工程属性→通用→启动对象→选择启动窗体 ▲ 窗体(Form)的常用属性、事件、方法 1常用属性 Name 名称 BorderStyle 边框类型(Fixed dialog与Fixed single的区别是前者不可以设置最大最小化按钮) Caption 标题 Icon 图标 Left 左边距 Top 上边距 Width 对象宽度(窗体还有个ScaleWidth属性,其值不含边框尺寸) Height 对象高度(窗体还有个Scale Height属性,其值不含边框尺寸) AutoRedraw 自动重绘 Enabled 对象是否可用 (True 是False 否) Visible 控件是否可见 Picture 图片属性 Font 字体 FontName 名称 FontSize 大小 FontBold 加粗 FontItalic 倾斜 FontStrikethru 删除线 FontUnderline 下划线 ForeColor 前景色 BackColor 背景色 MaxButton 是否显示最大化按钮 MinButton 是否显示最小化按钮 WindowState 窗口状态 0:正常 1:最小化 2:最大化 ※注意:Name属性只能通过属性窗口修改,不能在程序运行时通过代码修改。 2常用事件(选择方法:在代码窗口左边下拉列表中选择要操作的对象,右边下拉列表中选择相应的事件) Load 加载(默认) Activate 激活(标志:窗体可见) ULoad 卸载 MouseDown 鼠标按下(Button参数:三键鼠标:0左键 1右键 2中建 两健鼠标:1左键2 右键) MouseUp 松开鼠标 Click 鼠标单击 DblClick 鼠标双击 GotFocus 获得焦点 LostFocus 失去焦点 MouseMove 鼠标移动(参数X、Y返回鼠标坐标) KeyDown 键盘健按下(KeyCode参数返回按键扫描码,不区分上下档(有上下档的统一返回上档健字符扫描码; Shift参数返回值:1代表按下shift键,2代表按下 ctrl键,4代表按下alt键,7代表同时按下了三键)) KeyUp 键盘健弹起 KeyPress 按键时触发(KeyAscii参数返回所按健的ASCII码值;如果在KeyPress事件过程中执行KeyAscii = 0语句,则阻止输入按键字符) DragOver 在窗体内用鼠标拖动其他控件 DragDrop 在窗体内用鼠标拖动其他控件后释放鼠标 ※注意: ① 鼠标事件的相应顺序:MouseDown → MouseUp → Click → DblClick 按键事件的相应顺序:KeyDown → KeyPress → KeyUp ② Ctrl、F1等非字符健只能通过KeyDown和KeyUp事件捕获。 ③要触发窗体的DragOver和DragDrop事件,窗体内被拖动的控件其DragMode属性必须设为1(即自动拖动模式),或者在其MouseDown事件过程中通过执行Drag方法手动启动拖动,如:Text1.Drag 3常用方法 Show 显示 Hide 隐藏 Move 移动控件 格式:Object.Move(Left As Single,,,) 例: Me.move 6000,4000 '将窗体移动到(6000,4000)点位置 注:如果省略Object(控件名称),则移动当前对象。 Print 在窗体上显示字符串和表达式的值 Cls 清除Print方法显示的内容 SetFocus 设置焦点(使成为活动窗体) ▲ 标签(Lable)的常用属性、事件、方法 1常用属性 Caption 标题 Alignment 对齐方式 (0 左对齐1 右对齐2 中间对齐) AutoSize 控件对象的大小是否随标题内容的大小自动调整 BackStyle 设置标签背景是否透明: 0 透明1 不透明 BorderStyle 边框样式:0 无边框 1 固定单线框 DragMode 拖动模式 (0 手动 1 自动) ※注意:BackStyle 设为透明后BackColor属性设置无效。 2 常用事件 Click 鼠标单击(默认) DblClick 鼠标双击 3 常用方法 Drag 手动拖动 例:Label1.Drag 1 ‘开始拖放(1为Drag方法默认参数,可省略) 参数说明: 参数常量 值 含义 vbDragCancel 0 放弃拖放 vbDragBeginDrag 1 开始拖放(默认) vbDragEndDrag 2 完成拖放 ※注意:标签控件不能接收焦点,因此它没有GotFocus、LostFocus事件和SetFocus方法。 ▲ 文本框(TextBox)的常用属性、事件、方法 1常用属性 Alignment 对齐方式 (0 左对齐1 右对齐2 中间对齐) Locked 是否允许编辑。(设为False时能接收焦点但是不能编辑) Text 显示的文本内容 MaxLength 允许输入的最大字符数(最多允许输入65535个字符) MultiLine 是否可以输入多行文字(若该属性为False时,文本框控件对象的Alignment属性和ScrollBars属性无效) PasswordChar 设置/返回控件的显示字符(常用于隐藏密码) 例:Text1.PasswordChar = "*" '字符以"*"形式显示 Text1.PasswordChar = "" '取消隐藏 ScrollBars 设置滚动条模式(0 无滚动条1 水平滚动条2 垂直滚动条3 水平和垂直滚动条) SelStart 设置选中字符的开始位置,第一个字符的位置为0。 SelLength 设置选择字符个数 SelText 返回选中文本 ※注意: ①SelStart 、SelLength和SelText只能通过编写代码设置属性值。 ②通过设置SelStart、SelLength来选中文本时,文本框必须获得焦点才能显示选中效果。 2常用事件 Change 内容改变时触发(默认) Validate 文本框失去焦点前触发 KeyPress 用户敲击键盘时触发 说明: (1) Validate事件早于LostFocus事件触发,常用于校验输入数据是否符合要求;(参见P65)。只有在下一个即将获得焦点的控件的CausesValidation属性值设置为True时,Validate事件才发生。 (2) 如果在KeyPress事件过程中执行KeyAscii = 0语句,则会阻止输入按键字符。 3常用方法 SetFocus 获取输入焦点 4事件应用例子: (1)限制Text1文本框内容只能是数字字符 方法1:Private Sub Text1_Change() For i = 1 To Len(Text1.Text) x = Asc(Mid(Text1.Text, i, 1)) If x < 48 Or x > 57 Then MsgBox "请输入数字", , "输入" Text1.Text = "" Text1.SetFocus Exit For End If Next i End Sub 方法2:Private Sub Text1_Change() If Not IsNumeric(Text1.Text) Then MsgBox "请输入数字", , "输入" Text1.Text = "" Text1.SetFocus End If End Sub (2)限制Text1文本框只接收数字键和退格键 Private Sub Text1_KeyPress(KeyAscii As Integer) If (KeyAscii < 48 Or KeyAscii > 57) And (KeyAscii <> 8) Then '退格键码值为8 KeyAscii = 0 End If End Sub (3)设置文本框内容为选中 Text1.SetFocus Text1.SelStart = 0 '设置选中开始位置 Text1.SelLength = Len(Text1.Text) '指定选中长度 ※说明:设置SelStart和SelLength属性后, Text1.SelEext属性值即为文本框选中的字符。 ▲ 框架控件(Frame)的常用属性、事件、方法 1 常用属性 Caption 标题 Enabled 对象是否可用 (True 是False 否) Visible 控件是否可见 2 常用事件 DragOver 在框架内用鼠标拖动其他控件 DragDrop 在框架内用鼠标拖动其他控件后释放鼠标(默认) 3 常用方法 Move 移动 Drag 手动拖动 ※注意: ① 如果Enagled 为False,则框架内部的所有控件都不可用。 ② 早于框架控件创建的其他控件必须通过剪切、粘贴的方式才可以放入到框架内部,无法直接拖入。 ▲ 命令按钮(CommandButton)的常用属性、事件、方法 1常用属性 Caption 标题 Style 样式 Picture 背景图案 Default 设定是否为默认的确定按钮 Cancel 设定是否为默认的取消按钮 ToolTipText 鼠标悬停时的提示文本 ※注意: ① Style属性设为Graphical(图形)时通过Picture属性设置背景色才有效。 ② Default属性值为True时用户按下Enter键,就相当单击该按钮;Cancel属性值为True时按下“Esc”键相当单击该按钮。 2常用事件 Click 单击(默认) ※注意:命令按钮不支持DblClic鼠标双击事件。 3 常用方法 Drag 手动拖动 Move 移动 SetFocus 设置焦点 4设置按钮的快捷键(运行时按Alt+设定的快捷字母) 格式:题 + & + 快捷字母(一般用大写) 例: 退出&E '按快捷建Alt+E 相当与单击“退出”按钮 ▲ 时钟控件(Timer)的常用属性、事件、方法 1常用属性 Enabled 对象是否可用 (True 是False 否) Interval 获得或设置两次调用Timer控件的Timer事件间隔的毫秒数。 2常用事件 Timer 按设定的时间间隔自动触发的Timer事件(默认) ※注意:时钟控件没有预定义的方法。 ▲ 水平滚动条控件(HScrollBar)和垂直滚动条控件(VScrollBar)的常用属性、事件 1常用属性 Value 设置或返回滑块当前位置值 Max 定义Value属性值的最大值 Min 定义Value属性值的最小值 LargeChange 设置单击滚动条中间区域时滑块移动的距离(值)。 SmallChange 设置单击滚动条两端箭头时滑块移动的距离(值)。 2常用事件 Change 当Value值发生变化时触发该事件(默认) Scroll 拖动滑块时触发该事件 3 常用方法 Drag 手动拖动 Move 移动 SetFocus 设置焦点 ※注意: ① 在拖动滑块释放鼠标、单击滑块两侧区域、单击箭头,或者通过代码修改了Value属性值,导致Value属性值发生变化,都会触发Change事件。 ② 在拖动滑块时,Value属性值不会发生变化,只有在拖动后释放鼠标, Value属性值才变化。 ▲ 单选钮控件(OptionButton)的常用属性、事件 1常用属性 Style 设置对象的外观形式 0:标准 1:图形界面 Value 获得或设置单选钮处在什么状态。 False: 未选中 True:选中 2常用事件 Click 单击(默认) 3 常用方法 Drag 手动拖动 Move 移动 SetFocus 设置焦点 ('单选按钮获得焦点等同于被选中) ▲ 复选框控件(CheckBox)的常用属性、事件、方法 1常用属性 Style 设置对象的外观形式 0:标准 1:图形界面 Value 获得或设置单选钮处在什么状态。 0: 未选中 1:选中 2: 选中并置灰 2常用事件 Click 单击(默认) 3 常用方法 Drag 手动拖动 Move 移动 SetFocus 设置焦点 (复选框获得焦点并不等同于被选中) ▲ 列表框控件(ListBox)、组合框控件(ComboBox)的常用属性、事件、方法 1常用属性 List 项目列表(数组) ListCount 返回列表框中项目的数目。(只读) ListIndex 设置或返回控件中当前选中项目的索引(未选中时值为-1) Style 样式 列表框样式: 0 Standard(标准) 1 Checkbox(复选框样式:开头带个方框) 组合框样式: 0 下拉式组合框(默认) 1 简单式组合框 2 下拉列表框 Text 当前选中项的内容 MultiSelect 是否可以多选(组合框没有该属性) Selected 返回元素对应的列表框项是否被选中的逻辑数组(组合框没有该属性) 2常用事件 Click 单击(列表框默认事件) Change 在上方文本框中手动输入,使内容发生变化时触发(组合框默认事件) 注意:组合框进行项的选择操作一般在单击事件过程内进行处理. 3常用方法 AddItem 添加列表项(参数是代表列表项内容的字符串型数据,还可以跟一个代表插入位置的整形可选参数) 例:List1.AddItem "游泳" , 3 '3是代表插入位置 RemoveItem 删除列表项(参数是代表列表项位置的整形数据) 例:List1.RemoveItem 3 '删除第3项 Clear 清除所有列表项 例:List1. Clear 4 应用举例 (1)列表框、组合框的取消选中 ①列表框取消选中 A 单选的取消 List1.ListIndex=-1 B 多选(MultiSelect属性为True)的取消 For i = 0 To List1.ListCount - 1 If List1.Selected( i ) = True Then 'Selected为逻辑数组 List1.Selected( i ) = False End If Next i ②组合框的取消选中 方法1 Combo1.ListIndex=-1 方法2 Combo1.Text= "" (2)列表框、组合框的删除选中 ①列表框删除选中 A 单选的删除 List1.RemoveItem List1.ListIndex B 多选(MultiSelect属性为True)的删除 For i = List1.ListCount – 1 To 0 Step -1 '必须从大到小循环 If List1.Selected( i ) = True Then List1.RemoveItem i End If Next i ②组合框的删除选中 Combo1. RemoveItem Combo1.ListIndex ▲ 控件数组 1、什么是控件数组 控件数组是由一组相同类型的控件组成的控件组。 控件数组中的控件称为控件数组元素,所有控件数组元素共享相同的事件过程。 2、组成控件数组的条件 名称必须相同 类型必须相同 3、控件数组元素的命名: 名称(索引值) 例: Command1(0) '这里的索引值即控件数组事件过程中的Index参数 4、控件数组的创建方法 方法1: 通过给控件重命名的方式创建 方法2: 通过复制粘贴的方式创建 ※注:以上两种方法都会自动设置索引值(即Index属性) 5、控件数组的取消步骤 (1)将名称(Name属性)改为不同的值 (2)把索引值(Index属性)清空 ▲ 坐标系(P168) 1.分类 屏幕坐标系: 屏幕左上角为原点(0,0) 窗体坐标系: 窗体左上角为原点(0,0) 自定义坐标系: 可以自定义左上角坐标 2.度量单位:缇(Twip)、像素、磅、英寸 说明:VB默认的度量单位是缇;更改单位由Scalemode属性决定。 1英寸=1440缇 1厘米=567缇 1磅=20缇 3.如何设置自定义坐标系 方法1:用容器对象的Scale方法来定义。 格式: Object.Scale(x1,y1)-(x2,y2) '(x1,y1)为左上角坐标,(x2,y2)为右下角坐标 例: Picture1.Scale(100,50)-(400,300) 方法2:设置容器对象的ScaleLeft、ScaleTop、ScaleWidth和ScaleHeight属性 例: Picture1.ScaleLeft=100 Picture1.ScaleTop=100 Picture1.ScaleWidth=300 Picture1.ScaleHeight=200 ▲ 图片框控件(PictureBox)的常用属性、事件、方法(P170) 1 常用属性 Picture 设置和清除图像 AutoRedraw 是否重绘(该属性值设为True时,还原最小化窗体时能重绘内容) AutoSize 是否自动调整大小(该属性值设为True时,图片框会根据图像大小自动缩放) DrawMode 设置线条颜色的产生方式,默认值是13,用前景色画线(P171表) DrawStyle 设置线条类型(P172表) 样式: 0-实线(默认) 1-断线 2-点线 3-断点组合线 4-断点组合线 5-透明线 6-内部实线 DrawWidth 设置线条宽度 FillColor 设置填充颜色 FillStyle 设置填充方式(P172表)( 填充样式中的线条颜色由FillColor属性决定 ) 样式: 0-实心 1-空心(默认)2-水平线 3-垂直线 4-向右对角线 5-向左对角线 6-十字交叉线 7-对角交叉线 CurrentX CurrentY 设置或返回下一次绘图的起点坐标(设计时不可用) 2 常用事件 Click 单击(默认) 3 常用方法 Scale 自定义坐标系 格式:Scale (x1,y1) – (x2,y2) 例: Picture1.Scale (-300, -200)-(300, 200) 说明:x1,y1定义原点在新坐标系中的坐标值,x2,y2定义右下角在新作弊系中的坐标值。 Pset 画点 格式:PSet (x,y) '颜色指线条颜色,颜色表示方法参见P39 例:Picture1.PSet (1000, 1000) Line 画直线和矩形 格式:Line -(x2,y2)] 例: Picture1.Line (0, 0)-(100, 100), vbGreen '画线 Rem 画矩形必须带上线条颜色参数 Picture1.Line (-300, -200)-(-100, -100), , B '画矩形(不指定线条色则由ForeColor属性决定) Picture1.Line (-300, 200)-(-100, 100), vbGreen, B '画矩形 (指定线条颜色vbGreen-绿色) Picture1.Line (100, 100)-(300, 200), vbGreen, BF '画矩形 (BF忽略FillColor由线条色填充) Circle 画圆、椭圆、圆弧及扇形 格式:Circle (x,y),半径 说明: ①(x,y)为圆心坐标 ②起始角、终止角按逆时针方向 ③起始角、终止角的值是弧度值 计算公式: 弧度=角度 * PI / 180 'PI为自定义常量(Const PI=3.1415926) 角度=弧度 * 180 /PI ④起始角、终止角前面加负号时画的是扇形 ⑤长短轴比率,值1为正圆、小于1为水平椭圆、大于1为垂直椭圆,按值伸缩 例: Picture1.Circle (0, 0), 100, vbBlack '画圆 Picture1.Circle (200, -100), 100, vbBlack, , , 0.9 '画椭圆 Picture1.Circle (0, 0), 200, vbYellow, 135 * 3.14 / 180, 225 * 3.14 / 180 '画圆弧 Picture1.Circle (0, 0), 150, vbMagenta, -135 * 3.14 / 180, -225 * 3.14 / 180 '画扇形 Print 打印文本(注意:在代码窗口输入时该方法不会有自动提示) Point 返回指定点的颜色(返回值类型为Long) Cls 清除绘制的图形和文本(清除之后,CurrentX和CurrentY值恢复为0) ZOrder 设置控件的叠放顺序 'ZOrder 0 移到顶层 ,ZOrder 1 移到底层。 ▲ 图像控件(Image)的常用属性、事件、方法(P174) 1 常用属性 Picture 设置和清除图像 Stretch 调整大小的方式 值为Ture是根据框的大小调整图像大小, 值为False是根据图像大小调整框的大小。 2常用事件 Click 单击(默认) 3 常用方法 ZOrder 设置控件的叠放顺序 'ZOrder 0 移到顶层 ,ZOrder 1 移到底层。 ※ 给图片框/图像框控件设置图片(Picture属性)的两种方法(以图片框为例,图像框同理) 1 通过Picture属性栏设置 2 通过代码设置(使用LoadPicture函数)(P170例) 例: Picture1.Picture = LoadPicture("D:\花朵.jpg") '加载图片(绝对路径) Picture1.Picture = LoadPicture(App.Path & "\ " & "\风景.jpg") '加载图片(绝对路径) Picture1.Picture = LoadPicture("风景.jpg") '加载图片(相对路径,图片在程序当前目录下) Picture1.Picture = LoadPicture '清除图片(不带参数) 说明:1 App.Path代表当前应用程序所在目录; 2 如果用App.Path拼接图片路径字符串,则在App.Path和图片文件名之间必须加一个代表目录分隔符的反斜杠"\ "; ▲ 形状控件(Shape)的常用属性 Shape 返回或设置形状 样式: 0-矩形 1-正方形2-椭圆 3-圆 4-圆角矩形 5-圆角正方形 BorderColor 边框颜色 BorderWidth 边框宽度 BorderStyle 边框样式 (注意与图片框控件的DrawStyle样式值的区别) 样式: 0-透明线1-实线(默认)2-断线 3-点线 4-断点组合线 5-断点组合线 6-内部实线 FillColor 填充颜色 FillStyle 填充样式(与图片框的FillStyle设置值相同) DrawMode 线条颜色产生方式(与图片框的DrawMode设置值相同) ▲ 线形控件(Line)的常用属性 X1 起点横坐标 Y1 起点纵坐标 X2 终点横坐标 Y2 终点纵坐标 ※注意 ① 形状控件和线形控件都不支持任何事件! ② 如果先画图形控件,后画图片框控件,这时要把图形控件装入图片框容器,必须用剪切粘贴的方式而不能直接拖入。 ③ 如果将窗体作为图形控件的容器,必须将窗体的ScaleWidth和ScaleHeight属性值设为窗体的宽度和高度值(即自定义坐标系),否则图形控件无法准确定位。 ▲ 驱动器下拉列表框控件(DriveListBox)的常用属性、事件、方法(P186) 1 常用属性 Drive 运行时返回或设置所选定的驱动器名称 List 驱动器列表(数组) ListCount 返回驱动器数目。 ListIndex 设置或返回当前选中驱动器的索引 2常用事件 Change 每次重新设置Drive属性都会引发Change事件 例:Private Sub Drive1_Change() Dir1.Path = Drive1.Drive '将驱动器列表框的驱动器号赋给目录列表框 End Sub 3常用方法 ReFresh 刷新 ▲ 目录列表框控件(DirListBox)的常用属性、事件、方法 1常用属性 Path 运行时返回或设置当前路径 List 当前驱动器下子目录列表(数组) 说明: List(-2) 返回上级目录 List(-1) 返回当前目录 List(0) 返回当前目录下第一个子目录 List(1) 返回当前目录下第二个子目录 例: Dir1.Path = Dir1.List(-2) '将上级目录设为当前目录 Dir1.Path = Dir1.List(0) '将当前目录下第一个子目录设为当前目录 ListCount 当前目录下子目录数目 ListIndex 设置或返回当前选中目录的索引 2常用事件 Change 每次重新设置Path属性都会引发Change事件 例: Private Sub Dir1_Change() File1.Path = Dir1.Path '将目录列表框的路径赋给文件列表框 End Sub 3 常用方法 ReFresh 刷新 ※提示:双击目录列表框中的某个目录,就会显示出该目录下的所有子目录。 ▲文件列表框控件(FileListBox)的常用属性、事件、方法 1常用属性 Path 返回文件列表框中显示的文件所在的路径。 Pattern 返回或设置文件列表框所显示的文件类型(可用使用通配符)。 FileName 返回或设置选中文件的文件名和路径(返回时只返回不带路径的文件名,设置时可用带路径。) List 文件列表框中显示的文件列表(数组) ListCount 文件数目。 ListIndex 设置或返回当前选中文件的索引 2常用事件 PathChange 每次重新设置Path属性都会引发PathChange事件 3常用方法 ReFresh 刷新 ▲ VB颜色设置的四种表示方式 1、使用RGB(r,g,b)函数表示:r表示三原色里的红色分量,g表示三原色里的绿色分量,b表示三原色里的蓝色分量,各色取值范围都是0-255 例: RGB(255,0,0) '表示红色 RGB(0,0,255) '表示蓝色 2、使用十六进制方式:&HFFFFFF (&H开头,每两个FF代表一个颜色分量,从右到左分别是红、绿、蓝 例: &H0000FF '表示红色(左边全是0的可以省略)简化为&HFF &HFF0000 '表示蓝色( 右边全是0的不能省略) ※注意:当左边蓝色分量值为0时,尾部必须加上字符“&”否则报错,如&HFF3D& 3、用常量表示: 例: vbRed '表示红色 vbBlue '表示蓝色 4、使用QBColor(color)函数表示(参见P39表) 例: QBColor(1) '表示蓝色 QBColor(4) '表示红色 ▲ 数据类型 1什么叫数据:数据是指所有能输入到计算机并被程序处理的符号的集合。 2数据类型的分类 数据类型分标准类型(也叫基本类型)和用户自定义类型两种。 3常用数据类型 整形:Integer (%) 长整形: Long (&) 单精度型:Single (!) 双精度型:Double(#) 逻辑型:Boolean 日期型:Date 字符串型: String ($) 变体型: Variant 4 检测数据类型的相关函数(P74、P94) VarType(N) 返回参数N数据类型对应的整形值 TypeName(N) 返回参数N数据类型对应的类型名称 例: VarType(698) ‘返回2(代表整形) TypeName(“中国名胜”) ‘返回String ▲ 变量与常量(本质是存放数据的一块内存空间) 1 变量命名 规则:变量名只能由字符、数字和下划线构成,而且不能以数字开头,不能超过255个字符 2变量声明 (1) 变量声明的两种方式:显式声明与隐式声明 显式声明:先声明再使用 隐式声明:未声明直接使用(默认为变体型) (2) 变量声明 格式 Dim 变量名 例: '定义一个名为str的字符串型变量 Dim str as String '定义一个名为str的字符串型变量和一个名为n1的整形变量 Dim str as String , n1 as Integer '定义一个名为str的变体型变量和一个名为n1的整形变量 Dim str , n1 as Integer ※注意:一行可以定义多个变量(用逗号隔开); 如果变量名后面不跟数据类型则默认为变体型3声明(定义)符号常量。 3声明(定义)符号常量 格式 Const 常量名 = 表达式 例: Const PI As Single = 3.1415926 4 强制变量声明 语句:Option Explicit '写在代码顶部 作用:强制变量必须先声明再使用,可以降低因写错变量名而引起的麻烦。 ▲ 运算符与表达式 1 什么叫运算符:实现某种运算的符号 2 运算符的分类及其常用运算符 算术运算符: ^ - * / \ Mod + - 字符串运算符: & + 关系运算符: = > >= < <= <> 逻辑运算符: Not And Or 3 运算符的优先级:算术运算符 > 字符串运算符 > 关系运算符 > 逻辑运算符 ( 可以用圆括号()改变运算顺序 ) ※注意:字符串运算符推荐用“&”;用“+”运算符连接字符串时,如果其中某个连接项是数值型数据会产生错误,解决方法是将该项用CStr()函数进行转换。 4 表达式:用运算符和圆括号将操作数(变量、常量、函数)连接起来的有意义的式子。 例:(a + b) * h / 2 '计算面积 5 数学代数式与VB表达式 数学代数式 VB表达式 10 x |(10 – 1 ÷ 2)+ |- 6 → 10 * Abs((10 – 1 / 2)+ 3^2)- 6 6 运算符与表达式应用例子 (1)如何判断一个数是否是另一个数的倍数 a / b = a \ b '也可以用 a Mod b= 0判断 ▲ 函数 1、 什么叫函数:函数是指能实现特定功能或完成某种运算的程序段 2、函数的分类 函数分为内部函数和用户自定义函数两类 3、函数使用格式 函数名 4常用内部函数 数学函数 Abs(N): 求N的绝对值 Sqr(N): 求N的平方根 Rnd(N): 求0和N之间(包括0、不包括N)的双精度随机数 ( ※在使用该函数的代码前面必须加上初始化随机数生成器语句:Randomize ) Int(N): 求整(返回不大于N的最大整数) CInt(N):转整(将N转为最接近的偶数整数) Fix(N): 取整:截取N的小数部分求整数 ※产生两个数之间(包含两个数)的随机整数的计算公式: Int(Rnd*(大数-小数+1))+ 小数 (2) 字符串函数 Len(s) 求字符串的长度(字符个数) Left(s,n) 从s字符串左边开始取n个字符 Right(s,n) 从s字符串右边开始取n个字符 Mid(s,n1,) 从s字符串左边第n1个位置开始向右取n2个字符 Instr(s1,s2) 返回字符串s2在字符串s1中的位置,如Instr(2,"DECDEF","DE") = 4 InstrRev(s1,s2) 从右往左数,返回字符串s2在字符串s1中的位置 Asc(s) 求字符串s第一个字符的ASCII码值 如: Asc("a") → 97 Chr(N) 求SACII码值N的对应字符 如: Chr(65) → "A" Str(N) 将N转换为字符串(如果N≥0则返回的字符串开头包含一个前导空格) Cstr(N) 将N转换为字符串(返回的字符串开头不含前导空格) Val(s) 将字符串s中开头数字字符转成数值型(Double)数据 Trim(s) 去掉s字符串两边的空格 LTrim(s) 去掉s字符串左边的空格 RTrim(s) 去掉s字符串右边的空格 UCase(s) 将s字符串中所有小写字母转换为大写 LCase(s) 将s字符串中所有大写字母转换为小写 String(n,s) 返回由n个首字符组成的字符串 如: String(3,"AB") = "AAA" Space(n) 返回n个空格 (3) 常用日期、时间串函数 Date 返回系统日期 Time 返回系统时间 Timer 返回午夜到当前经过的总秒数(含两位小数的单精度型) Now 返回系统当前日期和时间 Year(D) 返回指定日期的年份 Month(D) 返回指定日期的月份 MonthName(N) 返回代表月份的N对应的中文月份 如:MonthName(Month(#2017-6-1#)) ‘显示“六月” Day(D) 返回指定日期的日子 Weekday(D) 返回指定日期的星期几,如:Weekday("2017-6-1")返回值为5 (星期四) WeekdayName(N) 返回代表星期几的N对应的中文星期 如:WeekdayName(Weekday(#2017-6-1#)) '显示“星期四” Hour(T) 返回指定时间的时数 Minute(T) 返回指定时间的分数 Second(T) 返回指定时间的秒数 DateSerial(年,月,日) 返回一个日期(参数是数值型) 如:DateSerial(2016,10,9) DateValue(C) 返回一个日期(参数是字符串型) 如:DateValue("2016,10,9") DateAdd(时间单位,T,D) 返回日期D加上T之后的日期 DateDiff(时间单位,D1,D2) 返回D1和D2的间隔时间 如DateDiff(“d”,“2018,1,1”, “2018,3,1”) '值为59 MonthName(Month(Now())) '显示中文月份,如“九月” WeekdayName(Weekday(Now())) '显示中文星期,如“星期二” ※说明: ①在VB中,中午12时为#12:00:00 PM#,午夜12时为#12:00:00 AM# ②如果将DateSerial和DateSerial函数的返回值赋值给一个数值型变量,则函数返回的是相对于1899年12月30日(为0)的天数值。 ③时间单位”参数需要加英文引号 ④时间单位参数取值及含义: 单位 yyyy q m d ww h n s y w 含义 年 季 月 日 周 时 分 秒 一年天数 一周天数 (4) 常用数据类型转换函数 CStr() 将数值转换为字符串 Val() 将字符串中的数字转换成数值 CBool() 将数字字符串或数值转换成布尔型 CDate() 将有效的日期字符串转换成日期 CSng() 将数值转换成单精度型 CDbl() 将数值转换成双精度型 (5) 输入函数InputBox 格式: InputBox(提示信息,,,,) ※说明:1 InputBox函数默认返回值是字符串类型; 2 如果返回值是数字字符串直接用于数学运算,则必须加Val函数先转换为数值型数据,如:Val(InputBox("请输入一个整数", "速度参数")) ; 3如果返回值赋值给已经定义为整形的变量,则返回值的类型自动转换为整形而不需要再用类型转换函数。 (6) 消息函数MsgBox ① 格式 MsgBox(提示信息) 例: n = MsgBox("确定是否继续运行程序!", 3 + 32, "是否继续运行程序") '需要返回值 MsgBox "确定是否继续运行程序!", 3 + 32, "是否继续运行程序" '不需要返回值 ※说明:1第二个参数按钮是按钮类型、图标样式、默认按钮和等待模式相应选项的相加值。 2如果不需要返回值, MsgBox后面不能加括号(以子过程方式调用) ② MsgBox按钮参数的取值: 按钮类型: 0 只显示“确定”按钮 vbOKOnly 1 只显示“确定”及“取消”按钮 vbOKCancel 2 显示“终止”、“重试”和“忽略”按钮 vbAbortRetryIgnore 3 显示“是”、“否”和“取消”按钮 vbYesNoCancel 4 显示“是”和“否”按钮 vbYesNo 5 显示“重试”和“取消”按钮 vbRetryCancel 图标样式: 16 显示系统叉号图标 vbCritical 32 显示系统问号图标 vbQuestion 48 显示系统叹号图标 vbExclamation 64 显示系统信息图标 vbInformation 默认按钮: 0 第一个按钮为默认按钮 256 第二个按钮为默认按钮 512 第三个按钮为默认按钮 等待模式: 0 应用程序暂停,等待用户响应 4096 系统挂起,等待用户响应 ③ 函数返回值:(返回值类型是长整型Long) 1 选“确定”按钮 2 选“取消”按钮 3 选“终止”按钮 4 选“重试”按钮 5 选“忽略”按钮 6 选“是”按钮 7 选“否”按钮 (7) 格式输出函数 Fromat ①格式: Format(目标数据) '格式要加双引号 例:Print Format(1234.567, "00000.00") '显示结果为01234.57 Print Format(#5:06:18 PM#, "hh时mm分ss秒A/P") '显示为05时06分钟18秒P Print Format("ABCDEFG", "<") '显示为abcdefg ②格式符(具体用法参见P90-92表) 数值型数据:0 # . , % $ + - E+ E- 日期和时间数据:d dd ddd dddd ddddd w ww m mm mmm mmmm y yy yyyy q h hh m mm s ss ttttt AM/PM(am/pm) A/P(a/p) 字符串数据:> < @ & (8) 调用外部应用程序函数Shell ①格式: N = Shell("外部应用程序") '窗口样式0 隐藏 1 正常 2 最小化 3 最大化 N = Shell("外部应用程序" + " " + "要打开的文件") '程序和文件要用一个空格隔开 例: N = Shell ("calc.exe", 1) '打开计算器(需要返回值) Shell "notepad.exe" + " " + "D:\唐诗.txt", 1 '用记事本打开D:\唐诗.txt(不需要返回值) ②返回值: 返回值N是代表程序运行的任务标识的一个双精度型数据。 ※注意: ①如果外部应用程序或要打开的文件跟VB的exe可执行文件在同一个文件夹内,可以省略路径; ②如果不需要返回值,Shell后面不能加括号(以子过程方式调用)。 (9) 两个控制位置的内部函数: Tab(n) 定位到第n列开始输出数据(默认每行开头列号为1) Spc(n) 从当前位置跳过n列开始打印下一个数据 ※Tab函数相关说明: ①如果当前的显示位置已经超过n,则自动下移一行(即下一行的n列); ②如果n<1,则把输出位置移到第一列。 (10) 判断函数IsNumeric(N): 判断N的值是否为数值型,返回值为布尔型(N为任何有效的表达式) 例: IsNumeric("123") '返回Ture IsNumeric("123abc") '返回False (11) iif()函数:根据表达式的值为真或假返回对应部分 ①格式IIf(表达式, 真值部分, 假值部分) 例:max = IIf(max < x, x, max) 等同于: If Max < x Then Max = x Else Max = Max End If 5 函数应用例子 (1) 判断一个数的平方根是否为整数 Sqr(N) = Int(Sqr(N)) (2) 判断一个字符a是否为数字 方法1:If a >= "0" And a <= "9" 方法2:If Asc(a) >= 48 And Asc(a) <= 57 (3) 判断一个字符a是否为大写字母 方法1:If a >= "A" And a <= "Z" 方法2:If Asc(a) >= 65 And Asc(a) <= 90 (4) 判断一个字符a是否为小写字母 方法1:If a >= "a" And a <= "z" 方法2:If Asc(a) >= 97 And Asc(a) <=122 (5) 判断文本框内容是否为数字字符串 IsNumeric(Text1.Text) (6) 判断某一天是一年中的第几天 T = DateDiff( "y", "2018-1-1", "2018-7-8" ) + 1 '189天 ("y"代表间隔天数) T = Format( "2018-7-8", "y" ) '189天 ("y"代表第几天) (还有个最基本的方法:就是先算出前面几个月的总天数,然后加上当月的天数,参见2018东博模拟试题第6套试题三渔夫打渔例子) (7) 计算经过时间(以秒为例) 方法1: Dim T_start As String, T_end As String Dim S_start As Long, S_end As Long, t As Long T_start = Str(Time()) '开始时间 T_end = Str(Time()) '结束时间 S_start = Hour(T_start) * 3600 + Minute(T_start) * 60 + Second(T_start) '换算秒数 S_end = Hour(T_end) * 3600 + Minute(T_end) * 60 + Second(T_end) t = S_end - S_start '相差秒数 方法2: T_start = Str(Time()) '开始时间 T_end = Str(Time()) '结束时间 t = DateDiff("s", T_start, T_end) (8) 限制文本框输入必须是数字字符(Change事件中判断): For i = 1 To Len(Text1.Text) x = Asc(Mid(Text1.Text, i, 1)) If x < 48 Or x > 57 Then MsgBox "请输入数字", , "输入" Text1.Text = "" Text1.SetFocus Exit For End If Next i (9) 产生一个随机色: Text1.ForeColor = RGB(Int(Rnd * 256), Int(Rnd * 256), Int(Rnd * 256)) (10) 数字字符串倒序输出 If IsNumeric(Text1.Text) Then x = Val(Text1.T