一、认识“ActiveX”控件1、开发工具,插入,表单控件和ActiveX控件,前者编辑余地小,后者需在设计模式下编辑;2、ActiveX控件的属性决定了其大小、位置等诸多方面,右键查看其属性,很多,但首先重点掌握3个共用属性:caption、Enable、Visible3、点击控件,在工作表界面的左上角可看到其(名称)属性,在vba界面,输入sheet1.后能弹出控件名称,如Sheet1.CommandButton1.Caption = "确认"可对属性赋值;4、稍微了解、练习以下其他属性,如:Sheet1.CommandButton1.Top=Sheet1.CommandButton1.Top+Sheet1.CommandButton1.Height,观察效果;5、了解了属性后,最关键是利用控件的事件,vba中进入控件所在的sheet,可选择到该控件,下拉可看到其支持的事件集;掌握主要的事件即可,如click。 了解一下MouseMove(鼠标悬停)事件,设计一个小游戏,始终无法点击到按钮。
二、了解几个常用控件及属性1、Label标签:用于给用户看信息,而不给用户修改;重点掌握3大属性;
2、选项按钮optionbutton:(a)用caption设置选项名(供选内容)(b)基于对group name属性的定义设置分组,组内单选;(c)选定的按钮value属性为true,否则为false3、微调按钮SpinButton:(a)无caption属性(b)max、min属性提供最大、最小调节范围(c)value属性是返回值(d)linkedcell属性一般不用,而是通过写宏 “range(“a1”)”=sheet1.spinbutton1.value的方式建立连接,再在该控件的change事件中“call 宏”;
三、考试系统设计练习逐块分析:(1)看一下成品演示,整个系统界面最核心的是由微调按钮控制,每次按按钮时,页面的展示内容发生变化(label标签及选项按钮链接的内容),(换题)实质是以变量方式对各label的caption赋值。(a)填入代码(b)设置spinbutton属性:max=8(也可根据设置为随题量变化的变量),min=1(c)在微调按钮的change事件中“call ceshi” (2)页面展示内容变化时,选项按钮的选定状态也应全部清空,即换题时应无默认选定项。因此添加代码。 (3)当题目答案选项小于4时,应将多余选项按钮隐藏。(代码逻辑:值为空的label对应的optionbutton的visible属性设为false;不空时为true)
Sub ceshi()
i = Sheet2.SpinButton1.Value '获取按钮控制变量
'根据微调按钮返回值显示不同界面内容
With Sheet2
.Label2.Caption = i
.Label3.Caption = Sheet3.Range("a" & i + 1)
.Label4.Caption = Sheet3.Range("b" & i + 1)
.Label5.Caption = Sheet3.Range("c" & i + 1)
.Label6.Caption = Sheet3.Range("d" & i + 1)
.Label7.Caption = Sheet3.Range("e" & i + 1)
End With 步骤(1)
Sub ceshi()
i = Sheet2.SpinButton1.ValueWith Sheet2'选项初始化为不选.OptionButton1.Value = False.OptionButton2.Value = False.OptionButton3.Value = False.OptionButton4.Value = False步骤(2)
'查看是否有CD两个选项,注意此时还在with里
If .Label6.Caption = "" Then
.OptionButton3.Visible = False
Else
.OptionButton3.Visible = True
End If
If .Label7.Caption = "" Then
.OptionButton4.Visible = False
Else
.OptionButton4.Visible = True
End If 步骤(3)
(4)应将选定答案传入原数据库,问题是什么时候传入?用什么事件激活?第一反应是用spinbutton激活,但容易出现的问题是,最后一题时,往往不会再点spinbutton,而是 点“结束考试”,因此不行。应用选项按钮激活,在表中optionbutton的click事件填入代码。代码逻辑:只要点击某按钮,用微调按钮值+1确认题的序号,将对应选项传回数据库。 (5)切入新题时,应先判断是否已有选定答案(例如回滚页面时),若有,应在页面显示,在主模块with语句内添加代码。 (6)界面往往有“第1题”及“最后一题”的按钮,该按钮同样连接这么多的信息,因此需同样多的代码。太麻烦,考虑代码重用。观察上述代码,全由变量i控制,因此可将sub改为带参数的sub过程,与此同时,(a)在考试界面sheet中的SpinButton1_Change事件内“call ceshi(sheet2.SpinButton1.Value)”,(b)"第一题“的CommondButton1_Click事件内“call ceshi(1)”,同时记着设置Sheet2.SpinButton1.Value=1;(c)最后一题“的CommondButton2_Click事件内“call ceshi(8)”,同时设置Sheet2.SpinButton1.Value=8"
Private Sub OptionButton1_Click()
Sheet3.Range("g" & Sheet2.SpinButton1.Value + 1) = "A"
End Sub
Private Sub OptionButton2_Click()
Sheet3.Range("g" & Sheet2.SpinButton1.Value + 1) = "B"
End Sub
Private Sub OptionButton3_Click()
Sheet3.Range("g" & Sheet2.SpinButton1.Value + 1) = "C"
End Sub
Private Sub OptionButton4_Click()
Sheet3.Range("g" & Sheet2.SpinButton1.Value + 1) = "D"
End Sub 步骤 4 根据选项按钮将选定项传入数据库
'返回之前的答案
If Sheet3.Range("g" & i + 1) = "A" Then
.OptionButton1.Value = True
ElseIf Sheet3.Range("g" & i + 1) = "B" Then
.OptionButton2.Value = True
ElseIf Sheet3.Range("g" & i + 1) = "C" Then
.OptionButton3.Value = True
ElseIf Sheet3.Range("g" & i + 1) = "D" Then
.OptionButton4.Value = True
End If 步骤 5
Sub ceshi()
Dim i as Integer
i = Sheet2.SpinButton1.Value
替换为:
Sub ceshi(i as Integer) 步骤 6
(7)进一步完善系统:A.点击“结束考试”按钮后,将考生答案与正确答案对比,弹出MSGBOX “共答对多少道题”。B. 点击“结束考试”后禁止再修改考试答案,禁止再次点击“结束考试”按钮。但是允许考生点击微调按钮查看考题和自己之前的答案。
四、窗体及其他控件1、窗体UserForm:除三个通用属性外,还注意“ShowModal显示模式”属性;常用方法:show、 hide;常用事件: UserForm_Activate激活、UserForm_QueryClose退出2、文本框TextBox:常用属性:Enabled可用性、Visible可见性、Value返回值、PasswordChar密码字符(如让输入登录密码时显示*)、TabIndex按下Tab键时的切换顺序。3、复选框CheckBox。常用属性:Enabled、Visible、Value返回值。4、复合框comboBox(下拉框)。属性:Enable/Visible/Value、List数据源列表。 常用方法:AddItem增加一个下拉项目、RemoveItem移除一个、Clear。5、列表框ListBox(实际是复选框的下半截)。属性:Enable/Visible/Value、ColumnCount列、List数据源列表。常用方法:AddItem增加、RemoveItem移除、Clear
五、演示:1、登陆系统界面:根据不同的用户显示不同的sheet2、演示如何在复合框中构建下拉列表、返回不同的选择值等;3、会员信息查询系统:根据手机号码的部分即可联想完整手机号码,并提取会员信息。