国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

利用VBA設(shè)計(jì)課堂練習(xí)題

2012-01-29 08:14
中國現(xiàn)代教育裝備 2012年8期
關(guān)鍵詞:文本框窗體幻燈片

祝 曉

利用VBA設(shè)計(jì)課堂練習(xí)題

祝 曉

由于利用多媒體課件教學(xué)有諸多優(yōu)越性,所以在提高教學(xué)質(zhì)量方面,多媒體課件不失為一種很好的輔助工具。制作多媒體課件的軟件也很多,如Flash,Authorware,PPT等,在實(shí)際使用時(shí)要根據(jù)教學(xué)需求和對這些軟件的熟悉程度加以選用。PPT的易用性和強(qiáng)大功能得到了廣大教師的青睞,如果結(jié)合使用VBA,PPT的靈活性、功能性、交互性、可擴(kuò)展性等都會(huì)大大增強(qiáng)。

一、VBA簡介

VBA是Visual Basic for Application的簡寫,它以VB(Visual Basic)語言為基礎(chǔ),經(jīng)過修改并運(yùn)行在Microsoft Office(如Excel,Word,PPT和Access)中的應(yīng)用程序,是一種完全面向?qū)ο篌w系結(jié)構(gòu)的編程語言。利用VBA可以對Office軟件進(jìn)行二次開發(fā),增強(qiáng)Office軟件的靈活性和擴(kuò)展性,例如,用VBA制作PPT課件,將會(huì)使課件別具特色。VBA是一種程序語言,有自己的語法規(guī)范,初學(xué)者可以找相關(guān)書籍或查閱VBA幫助,進(jìn)行學(xué)習(xí)。以下從練習(xí)題設(shè)計(jì)角度談VBA在PPT課件中的應(yīng)用。

二、VBA在PPT中的應(yīng)用實(shí)例

三、結(jié)束語

VBA在PPT中的應(yīng)用很廣泛,以上是對選擇題、判斷題、填空題、連線匹配題設(shè)計(jì)方面作的概述。程序的設(shè)計(jì)算法不同,代碼的精簡程度也不一樣,系統(tǒng)的運(yùn)行效率也不同。

2011-11-27

祝曉,本科。

云南省臨滄市云縣大寨中學(xué)。

1.準(zhǔn)備工作

(1)建立數(shù)據(jù)庫

數(shù)據(jù)庫是用來存放練習(xí)題和答案的,數(shù)據(jù)庫有多種,不同的數(shù)據(jù)庫有不同的優(yōu)缺點(diǎn)和適用范圍,這里選用Microsoft Access即可。本例建一個(gè)名為test的數(shù)據(jù)庫,這個(gè)數(shù)據(jù)庫包含4個(gè)表,分別是xzt(用于存放選擇題),pdt(用于存放判斷題),tkt(用于存放填空題),ppt(用于存放匹配題)。選擇題字段設(shè)計(jì):xzt(題目,備選A,備選B,備選C,備選D,答案),其余根據(jù)需要仿此。使用數(shù)據(jù)庫的目的是使課件更具有靈活性和可擴(kuò)展性,有了數(shù)據(jù)庫,只需要更新數(shù)據(jù)庫練習(xí)題的內(nèi)容,以后調(diào)用即可;而且答題界面可以做得很簡潔,一般一種題型用一張即可。

(2)界面設(shè)計(jì)

界面的使用可以選擇大家熟知的幻燈片(Slide),也可以使用Visual Basic編輯器中添加的用戶窗體(UserForm),它們各有優(yōu)缺點(diǎn),使用幻燈片的不足之處是程序執(zhí)行結(jié)果會(huì)保留在幻燈片上(重新播放時(shí),上次結(jié)果會(huì)保留在幻燈片上,使用不太方便),要除去這些內(nèi)容,還得多寫代碼;使用用戶窗體不足之處是幻燈片啟動(dòng)時(shí)看不見。因此在這里把它們結(jié)合起來使用。使用一張幻燈片,作為導(dǎo)航界面;使用若干個(gè)用戶窗體作為答題界面。執(zhí)行【視圖】/【工具欄】/【控件工具箱】命令,打開控件工具箱,單擊控件工具箱上的命令按鈕,在幻燈片的合適位置畫出4個(gè)按鈕,右擊第一個(gè)命令按鈕,在彈出的快捷菜單中單擊【屬性】,在打開的屬性對話框中,將Caption屬性改為“選擇題”。用同樣的方法將另外三個(gè)命令按鈕的Caption屬性分別改為“判斷題”“填空題”“匹配題”。然后使用Alt+F11組合鍵(或執(zhí)行【工具】/【宏】/【Visual Basic編輯器】命令)打開Visual Basic編輯器窗口,在此窗口中,執(zhí)行【插入】/【用戶窗體】就可插入用戶窗體。在第一個(gè)用戶窗體的合適位置添加兩個(gè)命令按鈕CommandButton1和CommandButton2,Caption屬性分別為“開始”“下一題”,Enabled屬性分別為真(True)、假(False);然后在適合的位置添加一個(gè)標(biāo)簽(Label1),用于顯示題目;在適合處添加4個(gè)單選按鈕(OptionButton1,OptionButton2,OptionButton3,OptionButton4),將Caption屬性值分別設(shè)置為“A”“B”“C”“D”,(字母大小寫一定要和數(shù)據(jù)庫中“答案”中的一致),并在每個(gè)單選按鈕的后邊加一個(gè)標(biāo)簽(Label2,Label3,Label4,Label5),用于顯示備選擇答案。另外在不影響操作的位置加一個(gè)文本框(TextBox1),把其可見性(Visible)設(shè)置為假(False),用于暫存已經(jīng)做的題目數(shù)量。第一個(gè)用戶窗體作為選擇題答題界面,一般一種題型用一個(gè)窗體,按需要仿窗體一設(shè)計(jì)即可。另外,界面的設(shè)計(jì)要符合界面設(shè)計(jì)原則。

2.應(yīng)用實(shí)例

(1)鏈接數(shù)據(jù)庫

①執(zhí)行【工具】/【宏】/【Visual Basic編輯器】命令,打開“Visual Basic編輯器”窗口。

②引用VBA工程(VBAProject)。單擊【工具(T)】/【引用(R)】,打開“引用—VBAProject”窗口,在“可使用的引用(A)”窗口中找到“Microsoft ActiveX Data Object2.6”并選中,單擊【確定】。

③單擊【插入】/【模塊】,就新建了一個(gè)模塊,默認(rèn)名稱是“模塊1”。

④雙擊“模塊1”并添加以下代碼:

Public adocon As ADODB.Connection

Public adorst As ADODB.recordset '在模塊中建立公共數(shù)據(jù)對象

Sub MAIN()

Set adocon = New ADODB.Connection

If adocon.State= adStateOpen And Not IsEmpty(adStateOpen) Then adocon.Close

adocon.Provider ="microsoft.jet.oledb.4.0"

adocon.ConnectionString ="test.mdb"

adocon.Open

'建立記錄集

Set adorst = New ADODB.Recordset

adorst.ActiveConnection = adocon

adorst.CursorLocation = adUseClient

adorst.CursorType = adOpenDynamic

adorst.LockType = adLockOptimistic

End Sub

(2)利用VBA設(shè)計(jì)選擇題

①單擊第一個(gè)用戶窗體中的“開始”按鈕

Private Sub CommandButton1_Click() '開始按鈕

CommandButton1.Enabled False

CommandButton2.Enabled True

TextBox1.Text = 1 '初始化題目量

Call MAIN

adorst.Source = "xzt"

adorst.Open , , , , adCmdTable

Label1.Caption = adorst.Fields(0)

Label2.Caption = adorst.Fields(1)

Label3.Caption = adorst.Fields(2)

Label4.Caption = adorst.Fields(3)

Label5.Caption = adorst.Fields(4)

End Sub

②單擊第一個(gè)用戶窗體中的“下一題”按鈕

Private Sub CommandButton2_Click()

Dim i As Integer

CommandButton3.Enabled = True

TextBox1.Text = TextBox1.Text + 1

i = TextBox1.Text

Call MAIN

adorst.Source ="xzt"

adorst.Open , , , , adCmdTable

If i <= adorst.RecordCount Then

adorst.AbsolutePosition =i

'指向第i條記錄

Label1.Caption = adorst.Fields(0)

Label2.Caption = adorst.Fields(1)

Label3.Caption = adorst.Fields(2)

Label4.Caption = adorst.Fields(3)

Label5.Caption = adorst.Fields(4)

End If

End Sub

③為第一單選按鈕添加代碼,其余依此類推。

Private Sub OptionButton1_Click()

If OptionButton1.Caption = adorst.Fields("答案") Then

MsgBox "答對了,你真棒!"

Else

MsgBox "錯(cuò)了,再想想!"

End If

End Sub

④為幻燈片上的“選擇題”按鈕添加代碼,其余依此類推。

Private Sub CommandButton1_Click()

Load UserForm1

UserForm1.Show

End if

這樣就可以打開選擇題答題界面。

(3)設(shè)計(jì)判斷題

判斷題的設(shè)計(jì)和選擇題類似,只需兩個(gè)單選按鈕(OptionButton1,OptionButton2),這兩個(gè)單選按鈕的Caption屬性分別設(shè)為“正確”“錯(cuò)誤”即可,其余仿選擇題。

(4)填空題的設(shè)計(jì)

只要答案是固定的,填空題也可以智能判斷。在設(shè)計(jì)數(shù)據(jù)庫時(shí),要填空的地方用括號表示,在答題界面上用文本框(TextBox)作為答題的地方,再用一個(gè)命令按鈕(CommandButton1)來判斷。關(guān)鍵代碼示例:

Private Sub CommandButton1_Click()

If TextBox1.Text = adorst.Fields("答案") Then

MsgBox "答對了,你真棒!"

Else

MsgBox "錯(cuò)了,再想想!"

End If

End Sub

(5)連線題(匹配題)的設(shè)計(jì)

用連線的方法判斷正誤不好設(shè)計(jì),改變思路,把要和某項(xiàng)相連的對象移動(dòng)到它的右邊,再判斷正誤。這樣,問題的關(guān)鍵轉(zhuǎn)化為怎樣拖動(dòng)要匹配的對象。關(guān)鍵代碼:

Dim X1, Y1 As Integer, Down As Boolean '設(shè)置全局變量,X1,Y1等為Label1等對象的初始坐標(biāo)值

Private Sub Label1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

If Not Down Then

X1=X

Y1=Y

Down = True

End If

End Sub

Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

'如果鼠標(biāo)已按下,設(shè)置Label1新的坐標(biāo)值

If Down Then

Label1.Left = Label1.Left + X - X1

Label1.Top = Label1.Top + Y - Y1

X1=X

Y1=Y

End If

End Sub

Private Sub Label1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

Down = False

TextBox1.Text = Label1.Caption

End Sub

以上把標(biāo)簽(Label1)的內(nèi)容(需要拖動(dòng)的對象)拖放到文本框中,就可以判斷正誤:

Private Sub CommandButton1_Click()

If TextBox1.Text = adorst.Fields("答案") Then

MsgBox "做對了,恭喜你!", vbOKOnly, "提示"

Else

MsgBox "做錯(cuò)了,還得努力?。?, vbOKOnly, "提示"

End If

End Sub

從以上代碼可以看出,如果需要匹配的對象較多,就要寫很多代碼,如果一個(gè)標(biāo)簽對應(yīng)一個(gè)匹配對象,每個(gè)標(biāo)簽都寫MouseDown,MouseMove和MouseUp事件代碼。解決問題的辦法不是唯一的,另外一種思路:用文本框的Change事件為文本賦值,同時(shí)把標(biāo)簽隱藏,即可見性設(shè)置為假。具體做法是:用一個(gè)標(biāo)簽作為匹配對象的序號,一個(gè)標(biāo)簽作為匹配對象,一個(gè)文本框作為匹配對象的容器,利用文本框的Change事件,向文本框輸入序號時(shí),序號消失而將匹配對象賦予文本框,同時(shí)利用代碼使用表示序號和匹配對象的標(biāo)簽隱藏(可見性設(shè)為假)。關(guān)鍵代碼示例:Private Sub TextBox1_Change()

If TextBox1.Text = “1” Then

TextBox1.Text = Label2.Caption

Label1.Visible = False

Label2.Visibl= False

End If

End Sub

以上Label1用于表示序號,即Label1.Caption ="1",Label2用于顯示要匹配內(nèi)容。文本框賦值后,判斷正誤方法同上。

猜你喜歡
文本框窗體幻燈片
水幕幻燈片
巧用文本框?qū)崿F(xiàn)PPT多圖片排版
PPT文本框的另類應(yīng)用
試談Access 2007數(shù)據(jù)庫在林業(yè)檔案管理中的應(yīng)用
基于Qt的多窗體快速并行圖形繪制方法研究
圖片動(dòng)畫玩異樣
實(shí)現(xiàn)幻燈片的縮放功能
文本框酷變3D效果
顯示或隱藏“大綱”或“幻燈片”選項(xiàng)卡
WinCE.net下圖形用戶界面的開發(fā)