推 wrltertnnn:pjush 09/02 14:45
※ 引述《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
[蒙帝派松正體中文計畫] http://www.youtube.com/user/JamesBondXD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 58.114.194.207
※ 編輯: MOONRAKER 來自: 58.114.194.207 (06/08 01:54)