vba控制ppt代码(运用VBA技术完美解决PPT交互式简答试题的设计)
vba控制ppt代码(运用VBA技术完美解决PPT交互式简答试题的设计)同时,修改命令按钮必要的属性。如下图所示图1 交互式简答题PPT课件界面一、交互式简答题试题PPT课件前端界面设计首先是插入必要的普通图形文本框作为每小题的题干展示,然后再在【开发工具】功能选项卡面板里找到ActiveX控件文本框,插入2个ActiveX控件文本框 (并设置它们的滚动条ScrollBars属性,如下图所示
大家好,上一期作品是关于交互式填空试题PPT课件的设计,大家已经很凄楚地看到了它和前面的选择、判断题类型的很大差别:以检索、匹配答案关键词的形式得出成绩。
今天,我们继续来分享与第四种交互式试题类型类似的第五种类型“PPT交互式简答试题”的设计制作。
相比第四种带填空性交互式试题而言,简答题有着答案词库扩展的功能。
好吧,我们就来给大家分享第五种类型“PPT交互式简答试题”的设计,也算是完美收关。
一、交互式简答题试题PPT课件前端界面设计
首先是插入必要的普通图形文本框作为每小题的题干展示,然后再在【开发工具】
功能选项卡面板里找到ActiveX控件文本框,插入2个ActiveX控件文本框 (并设置它们的滚动条ScrollBars属性,如下图所示
图1 交互式简答题PPT课件界面
同时,修改命令按钮必要的属性。如下图所示
图2 命令按钮必要的属性设置
二、交互式简答题试题PPT课件后台功能代码实现
(一)模块1的实现代码
Sub OnSlideShowPageChange() '演示文档放映时即刻触发的事件
'如果当前播放的演示文档的幻灯片显示窗口的预览下,当前的显示定位为第一张幻灯片时,做一次初始化试题工作(这样就避免了每张幻灯 _
片跳变都要执行无谓的浪费资源式的初始化工作)
If ActivePresentation.SlideShowWindow.View.CurrentShowPosition = 1 Then
Initialize_Testing_Questions '调用初始化试题为未解答状态
End If
End Sub
Sub Initialize_Testing_Questions() '初始化试题为未解答状态
'简答题初始化
Dim ctr_shortanswer As Shape 'ctr_shortanswer为ActiveX控件(特别注意的是:PowerPoint幻灯片上面的控件皆作为图形的形式访问 _
,要访问这些“图形”式的ActiveX控件的属性必须采用“图形对象.OLEFormat.Object.属性”的形式进行)
little_subject_num = 0 'little_subject_num--统计试题小标题题目的个数
For Each shp In Slide5.Shapes
If InStr(shp.Name "TextBox ") Then little_subject_num = little_subject_num 1
Next
little_subject_num = little_subject_num - 1 'little_subject_num最终统计包含了试题大标题“五、简答题”,所以试题小标题题 _
目个数应该是必须减去1
For k = 1 To little_subject_num 'k从简答题的1~little_subject_num个小题的循环
Set ctr_shortanswer = Slide5.Shapes("TextBox" & k)
ctr_shortanswer.OLEFormat.Object.Value = ""
ctr_shortanswer.OLEFormat.Object.MultiLine = True '设置文本框控件可换行,属性为“.MultiLine = True”
ctr_shortanswer.OLEFormat.Object.ScrollBars = fmScrollBarsVertical '设置文本框控件显示垂直滚动条,属性为 _
“.ScrollBars = fmScrollBarsVertical”
Next
End Sub
Sub ShortAnswer_Question() '简答题操作
'aswer--为暂存用户当前每题简答的答案,ShortAnswer_result--几个题简答的结果,ctr_shortanswer为ActiveX控件(特别注意的 _
是:PowerPoint幻灯片上面的控件皆作为图形的形式访问,要访问这些“图形”式的ActiveX控件的属性必须采用“图形对象.OLEFormat.Object.属性”的形式进行)
Dim aswer As String ShortAnswer_result As String ctr_shortanswer As Shape
Dim ShortAnswer_key(0 To 1) As String '定义一个0~1下标范围的简答答案要点的数组ShortAnswer_key
'定义并且初始化正确答案要点关键词库数组right_keys
right_keys = Array("Python简单易懂" "开发效率高" "高级语言" "可移植性强" "可扩展性好" "可嵌入性" "速度慢" "代码不能加密" "不能多线程用多核CPU") '定义并且初始化正确答案数组
aswer = "" '暂存用户当前每题简答的答案要点的变量,初始化为空
right_key_num = 0 '定义并初始化一个正确答案数量变量right_key_num,初始化为0
little_subject_num = 0 'little_subject_num--统计试题小标题题目的个数
For Each shp In Slide5.Shapes
If InStr(shp.Name "TextBox ") Then little_subject_num = little_subject_num 1
Next
little_subject_num = little_subject_num - 1 'little_subject_num最终统计包含了试题大标题“五、简答题”,所以试题小标题 _
题目个数应该是必须减去1
For k = 1 To little_subject_num 'k从简答题的1~little_subject_num个小题的循环
Set ctr_shortanswer = Slide5.Shapes("TextBox" & k)
If Len(Trim(ctr_shortanswer.OLEFormat.Object.Value)) = 0 Then '如果当前控件访问的状态值为True(选中),则作如下简答的 _
答案的在FillBlank_aser_str_array数组中对应答案的下标获取存于t变量中
aswer = "第" & k & "道简答题:[未填写答案]"
ShortAnswer_key(k - 1) = aswer
Else
For i = 0 To UBound(right_keys)
If InStr(ctr_shortanswer.OLEFormat.Object.Value right_keys(i)) Then
aswer = right_keys(i)
ShortAnswer_key(k - 1) = ShortAnswer_key(k - 1) & aswer & Space(1)
right_key_num = right_key_num 1 '统计正确的答案数量
End If
Next
If Len(Trim(ShortAnswer_key(k - 1))) > 0 Then
ShortAnswer_key(k - 1) = "第" & k & "道简答题你解答的要点是:" & Left(ShortAnswer_key(k - 1) Len(ShortAnswer_key(k - 1)) - 1) '去掉尾部多余的空格
Else
ShortAnswer_key(k - 1) = "第" & k & "道简答题你的解答无标准答案所含的任何要点!"
End If
End If
ShortAnswer_result = ShortAnswer_result & ShortAnswer_key(k - 1) & Chr(10)
Next
ShortAnswer_result = Left(ShortAnswer_result Len(ShortAnswer_result) - 1)
right_key_rate = "您简答的正确率为【" & Round(100 * right_key_num / (UBound(right_keys) 1) 1) & "%】"
'以下即是间隔简答结果字符串、正确答案字符串、正确率字符串进行串接,然后显示
ShortAnswer_result = "第1~" & little_subject_num & "道简答题你简答的答案要点分别是:" & Chr(10) & ShortAnswer_result
r_key_str1 = "第1道简答题标准答案要点:": r_key_str2 = "第2道简答题标准答案要点:"
For i = 0 To UBound(right_keys) '拆解出标准答案要点,并且进行串接
If i < 6 Then
r_key_str1 = r_key_str1 & right_keys(i) & Space(1)
Else
r_key_str2 = r_key_str2 & right_keys(i) & Space(1)
End If
Next
r_key_str1 = Left(r_key_str1 Len(r_key_str1) - 1)
r_key_str1 = Chr(10) & r_key_str1 & Chr(10)
r_key_str2 = Left(r_key_str2 Len(r_key_str2) - 1)
r_key_str = r_key_str1 & r_key_str2
right_answers = "正确答案要点分别是:" & r_key_str
total_result = ShortAnswer_result & Chr(10) & right_answers & Chr(10) & right_key_rate
MsgBox total_result vbInformation "答案揭晓"
End Sub
(二)Slide4里的必要代码
Private Sub Display_ShortAnswer_Result_Btn_Click()
ShortAnswer_Question '调用简答题操作过程
End Sub
三、交互式简答题试题PPT课件运行测试
(一)按<F5>键,进入演示文档放映状态。如下图
图3 简答题PPT课件放映
(二)未进行任何试题的简答时,直接点击<查看简答的结果和答案>按钮,将呈现无任何简答选择的结果状态。如下图
图4 未进行任何试题的简答的结果情况
(三)只进行部份试题的简答时,点击<查看简答的结果和答案>按钮,将呈现部份简答选择的结果状态。如下图
图5 部份试题的简答的情况
(四)进行全部试题的简答后,点击<查看简答的结果和答案>按钮,将呈现全部简答的结果状态。如下图
图6 全部试题的简答的情况
四、本期技术小结
基本和第四种类似,这里从略
好了,我们本期的内容就分享到这里,希望大家好好体味,到此为止五大类型的交互式试题我全部分享给大家了!
最后,还是非常感谢大家不离不弃地关注我,希望大家继续关注(头条号:跟我学Office高级办公)、推广和点评!也请大家持续关注我的下一期关于简答题的交互式作品的推出哦!