ad

达人之路《Excel 管理信息处理与实践教程第二版——全面兼容2016》_10.3.3 事件编程

网友投稿 124 2023-11-13

【摘要】 本书摘自《Excel 管理信息处理与实践教程第二版——全面兼容2016》一书中第10章,第3节,刘启刚著。

10.3.3 事件编程

当然不能将上面的窗口直接给用户看,因此必须在窗口初始化的时候就调入第一题的内 容。有了全局变量 RofQ, 就能时刻知道现在第几题,只需要将RofQ+1 行相应列单元格的内 容,分别通过相应控件显示出来即可,其中Labell 的显示内容是序号列内容、顿号和题目列内 容连接在一起构成的。选项按钮则显示相应选项的内容。哪一个选项按钮被选中,则取决于答题列单元格是否记录了用户曾经选过的选项按钮。反之,任何一个选项按钮被点选,则应该 在相应行的答题列单元格记录用户的选择。这样,不论什么时候回到某一题,都能正确显示用 户是否曾经点选答题过了。

用户窗体初始化的时候,RofQ 为1,然后显示相应题目。而前一题或者后一题,只需 RofQ减去1或者加上1,然后显示相应题目即可。因此上面所分析的显示相应题目的功能, 可以放在用户窗体内某一个宏当中,供几个不同的事件调用。我们直接将这个功能写在 UserForm1 的 Click 事件宏当中,以便供其他宏调用,同时还能实现点击用户窗体空白处刷新 当前题目的功能,代码如下:

达人之路《Excel 管理信息处理与实践教程第二版——全面兼容2016》_10.3.3  事件编程

Private Sub UserForm_Click()

'显示题目

Label1.Caption =Cells(ROfQ+1,1).Text&" 、"&Cells(ROfQ +1,2).Text

'显示备选项

OptionButton1.Caption OptionButton2.Caption OptionButton3.Caption OptionButton4.Caption

=Cells(ROfQ =Cells(ROfQ =Cells(ROfQ =Cells(ROfQ

+1,3).Text

+1,4).Text

+1,5).Text

+1,6).Text

'显示被选中的备选项

Select Case Cells(ROfQ +1,8).Text

Case"1"

End Select

End Sub

这样,用户窗体初始化和前一题后一题两个按钮的代码就分别简化为:

Private Sub UserForm_Initialize()

'初始化变量

NOfQ =10

ROfQ =1

'清空答题列

For i =2 ToNOfQ =1

Cells(i,8).Value =""

Next

'显示题目

Call UserForm_Click

End Sub

Private Sub CommandButton1_Click()

If ROfQ>1 Then '判断是否第一题

ROfQ =ROfQ -1

Call UserForm_Click

Else

response =MsgBox(“已经是第一题了。”,vbOKOnly,“提示)

End If

End Sub

Private Sub CommandButton2_Click()

IfROfQ

ROfQ =ROfQ +1

Call UserForm_Click

Else

response =MsgBox(“已经是最后一题了。”,vbOKOnly,”提示")

End If

End Sub

题目显示实现了,下一步是要实现利用答题列来记录用户曾经选择过的选项。当用户点 选某个选项按钮的时候,就应该显示该选项按钮被选中,同时在答题列记录该选项按钮被选中 的序号,选项按钮被选中,同时前一个被选中的不再被选中,是由VB 内在逻辑完成的,因此只 需记录哪个按钮被选中即可,如第一个选项按钮的 Click 宏如下:

Private Sub OptionButton1_Click()

Cells(ROfQ +1,8).Value ="1"

End Sub

接下来,就是要提交答案,按照我们的设计,用户其实可以在任何时候提交答案,为了避免 用户误点提交答案命令按钮,需要给用户一个提示和选择的机会。然后对比标准答案和用户 答题,并记数显示分数。因此,提交答案命令按钮的事件宏如下:

Private Sub CommandButton3_Click()

‘询问用户是否提交答案

response =MsgBox(“确定提交答案吗?”,vbYesNo,”提示!)

If response =vbYes Then

'计算用户分数

score =0

For i =2 ToNOfQ +1

If Cells(i,7).Text =Cells(i,8).Text Then score =score +1 Next i

'显示用户分数

response =MsgBox("总题目数为"&NOfQ&"道,您的得分为"& score&" 分。") Else

End If

'退出程序

Unload UserForm1

'重新显示 Excel 窗口

Application.Visible End Sub

=true

接下来,我们在 Workbook_open 事件宏中加上显示 UserForml.show, 就可以实现在工 作簿打开的时候自动运行程序了,由于在这里加上了重新显示 Excel 窗口的语句,如果调试其 他语句都没有问题的话,前面隐藏窗口的语句也可以不再注释了。

Private Sub Workbook_Open()

'隐藏 Excel 窗口

Application.Visible =False

'运行用户窗体1

UserForm1.Show

End Sub

至此, 一个简单的模拟测试程序就完成了。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:达人之路《Excel 管理信息处理与实践教程第二版——全面兼容2016》_6.1.2 使用分析工具库发现数据规律
下一篇:达人之路《Excel 管理信息处理与实践教程第二版——全面兼容2016》_3.1.2 数组公式输入
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×