作者MOONRAKER (㊣遂去,不复与言)
看板Visual_Basic
标题Re: [VBA ] 表单可以连结吗???
时间Wed Jun 8 01:52:27 2011
※ 引述《gade62001 (lcp)》之铭言:
: 因为作业的需要
: 我们想要用VBA做心理测验
: 但我们想知道USERFORM里的按钮
: 可以连结到另外一个新的USERFORM嘛
: 或是MSGBOX里的回答(EX YES NO)
: 可以改成其他选项或是有更多的回答嘛???
: 我们是新手~~~拜托大家帮忙
因为你标题是VBA,就以VBA的状况来看
VBA中一个表单就是一个程式
如果要用多表单,参数也不容易在多个表单之间传递
硬要写出来,对新手而言也很难写下去
但是心理测验往往有那种「本题答A者请跳答8题」的设计
感觉上这种时候用各个form跳来跳去好像会比较好做
因为测验各题之间只有答题顺序的关连,没有其他累计属性,如分数
最後导到某一个form显示「你是…………的人,你都穿袜子进浴室」就好了
如果你们要做的就如上述(没有分数累计,但有跳答关系的测验),可以不看下面
不然,对有分数累计的测验而言,可以在同一个form中拉多个按钮、输入框等元件
在不同情况下显示或隐藏,用一个form达到多重form的效果
比如说,是非题只显示两个按钮;选择题显示到四个;
问答题通通隐藏,只显示输入框
这样你们的程式会比较好写
按钮或输入框显不显示利用各个control的visible属性
如commandbutton1.visible = true,表示显示;false就是不显示
还可以用frame把多个control组织起来
这样控制frame的visible就可以隐藏或显示同一批control
以下的档案下载後解开是一个Excel 2003的档案
含一个form,是一个简单的算术测验游戏
http://goldmember.myweb.hinet.net/transfer/singlechoice.zip
特色是每次执行时除了产生题目外,还会乱数产生一个1-3的难度值
难度1时,显示两个按钮;难度2时显示三个,以此类推
而各个按钮的答案则用按钮的caption属性来显示
就测验而言,把题目用阵列存起来,每题的选项数也用阵列存,不要乱数产生
那麽这个程式就可以做测验了
但是测验的答案较长,最好不要显示在按钮上
可以用若干个label显示答案
按钮就固定显示A,B,C,D就好
至於那种「本题答A者请跳答8题」的设计
需要一个二维阵列存放各选项的跳题题号(next question)
比如说,nq(10, 4), nq(1, 0)表示第一题选项A的跳题题号;
nq(2,2)表示第二题C的跳题题号
如果某一题不管答什麽都不影响答题顺序,如第二题,那麽阵列内容就是
阵列索引 (2, 0) (2, 1) (2, 2) (2, 3)
内容 3 3 3 3
而第三题如果答A会跳到8,答B跳到6,其他选项不影响,那就是
阵列索引 (3, 0) (3, 1) (3, 2) (3, 3)
内容 8 6 4 4
整个阵列编起来就是
nq(i, j)
i/j 0 1 2 3
================================
1 2 2 2 9
2 3 3 3 3
3 8 6 4 4
4 5 7 5 6
... ............
其实这种设计用阵列做并不难,题目也很好安排。用到资料库的时候才是变态难。
---
前年我同事写一次这种跳题试卷,他写的厉害到我看不懂。所以去年另一个客户
也要跳题的时候我只好自己写。虽然写出来了,可是半年之後他又要用,这时我
完全忘记当初是怎麽写的。Zero-maintainability. :P
--
Google 关键字 : MPFC-TCP / 杀人笑话 / 包租婆也有过当罗莉的时候
Youtube关键字 : 脱衫脱裤 / 傻蛋奥运 / 宗教审讯 / 买张床 / 单车超人 / 讴歌金钱
*美发师登山队 http://tinyurl.com/dm6lh3 *Ypres 1914 http://tinyurl.com/b432jb
[蒙帝派松正体中文计画] https://www.youtube.com/user/JamesBondXD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 58.114.194.207
※ 编辑: MOONRAKER 来自: 58.114.194.207 (06/08 01:54)
1F:推 wrltertnnn:pjush 09/02 14:45