ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
123
返回列表 发新帖
楼主: 希望123456

[求助] 一个是我用VBA写的选择题,还有一个是别人用javascript写的选择题,我想用改进

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-22 18:25 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
micch 发表于 2023-5-21 16:13
写一个function,比如命名为   selectanswer(a),在4个选择对应的sub中写 call selectanswer(a)

给这 ...

大佬,你说的这个call,我加了一个参数进去,运行错误呀,代码发上去了,怎么修改?

TA的精华主题

TA的得分主题

发表于 2023-5-22 18:42 | 显示全部楼层
希望123456 发表于 2023-5-22 14:57
Function aw(a As Integer)
If OptionButton & a = True Then
   an = "回答正确"

论坛有一点总觉得不太方便,文件还需要压缩才能上传,所以我一般不做文件,太麻烦了。电脑旧,垃圾文件多了增加碎片。

我描述一下: 比如选项A对应的optionButton1,call aw(1),B对应的  call aw(2),以此类推

这样aw通过引用的数字就知道操作上选了哪个答案。

function aw(a)
'如果正确答案是 C,把abcd和1234对应起来,或者参数a用string,直接用字母而不用数字
if a = 3 then msgbox “回答正确” else msgbox "回答错误,请重试"
end function

TA的精华主题

TA的得分主题

发表于 2023-5-22 21:12 | 显示全部楼层
  1. Function aw(Answer As String)
  2. If Answer = "C" Then '//等于题目的正确答案C
  3.    an = "回答正确"
  4. Else
  5.    an = "回答错误请重试"
  6. End If
  7. MsgBox an, vbOKOnly, "检查答案"

  8. End Function
  9. Private Sub OptionButton1_Click()
  10. Call aw("A")
  11. End Sub

  12. Private Sub OptionButton2_Click()
  13. Call aw("B")
  14. End Sub

  15. Private Sub OptionButton3_Click()
  16. Call aw("C")
  17. End Sub

  18. Private Sub OptionButton4_Click()
  19. Call aw("D")
  20. End Sub
复制代码
先得有题目的正确答案,然后函数aw才能根据答题情况返回对应结果

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-22 21:23 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Function aw(a As Integer)
If OptionButton & a = True Then
   an = "回答正确"
Else
   an = "回答错误请重试"
End If
MsgBox an, vbOKOnly, "检查答案"
End Function

Private Sub OptionButton1_Click()
Call aw(4)
End Sub

Private Sub OptionButton2_Click()
Call aw(4)
End Sub

Private Sub OptionButton3_Click()
Call aw(4)
End Sub

Private Sub OptionButton4_Click()
Call aw(4)
End Sub
这个代码到底怎么修改,问题不解决了,心理好纠结,有人把代码修改一下吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-22 21:48 来自手机 | 显示全部楼层
micch 发表于 2023-5-22 21:12
先得有题目的正确答案,然后函数aw才能根据答题情况返回对应结果

如果能按照我的那种设想,代码会多方便呀,如果这样的写法,对于批量修改代码不利!要改好多处!比如你要是增加第二道选择题,代码又得写好多!

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-22 22:28 | 显示全部楼层
micch 发表于 2023-5-22 21:12
先得有题目的正确答案,然后函数aw才能根据答题情况返回对应结果

Function aw(i)
If i = 1 Then
   an = "回答正确"
Else
   an = "回答错误请重试"
End If
MsgBox an, vbOKOnly, "检查答案"
End Function
Private Sub OptionButton1_Click()
Call aw(2)
End Sub
Private Sub OptionButton2_Click()
Call aw(2)
End Sub
Private Sub OptionButton3_Click()
Call aw(2)
End Sub
Private Sub OptionButton4_Click()
Call aw(1)
End Sub
Private Sub OptionButton5_Click()
Call aw(2)
End Sub
Private Sub OptionButton6_Click()
Call aw(1)
End Sub
Private Sub OptionButton7_Click()
Call aw(2)
End Sub
Private Sub OptionButton8_Click()
Call aw(2)
End Sub

大佬,根据你的提示,我做了一个变通的处理,就是我把i=1设置为正确答案,这样FUNCTION只要写一个就行了,其他的错误答案,我只要CALL 的时候,给一个i=2就达到我想要的批量修改的目的了,现在还有一个问题没有解决,就是如何批量修改8个OptionButton的caption属性,否则要一个一个复制粘贴很繁琐!

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-5-22 22:31 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
micch 发表于 2023-5-22 21:12
先得有题目的正确答案,然后函数aw才能根据答题情况返回对应结果

十分感谢micch大佬对我的耐性讲解,每次我发的帖子,您都认真回答了!我回复了,但是审核中,还有一个问题想请教您!

TA的精华主题

TA的得分主题

发表于 2023-5-22 23:53 | 显示全部楼层
希望123456 发表于 2023-5-22 21:48
如果能按照我的那种设想,代码会多方便呀,如果这样的写法,对于批量修改代码不利!要改好多处!比如你要 ...

写代码不是你这样的思路。为什么要call function,因为一个function能做所有的事情。

以这个帖子为例,所有optionbutton可以共用一个sub,然后把function内容写在sub中。就不用call了。

关键是把变量设好,通过变量的值的切换实现。当题目切换的时候,顺便切换答案。

不存在批量修改代码的情况,因为只有一个sub,代码要通用,就不需要复制很多份
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 07:33 , Processed in 0.034577 second(s), 5 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表