? 最近單位組織了一次英語會(huì)話比賽,,筆者用powerpoint內(nèi)嵌的VBA功能制作了一個(gè)即時(shí)評(píng)分系統(tǒng),,受到老師和同學(xué)們的一致好評(píng),現(xiàn)將制作過程與大家分享,。
準(zhǔn)備工作:在桌面新建一個(gè)名為“評(píng)分系統(tǒng)”的文件夾,,用于存放參賽隊(duì)的相關(guān)信息,其中Name.txt中保存了各參賽隊(duì)名稱(需事先準(zhǔn)備,,每個(gè)隊(duì)名占一行),。
啟動(dòng)工作:新建一張空白幻燈片,在“視圖”菜單下找到“工具欄”子菜單,,選擇其中的“控件工具箱”(大家也可根據(jù)實(shí)際需要改變主界面風(fēng)格),。調(diào)整相應(yīng)控件位置,,評(píng)委照片用的是“圖像控件”,下面的分?jǐn)?shù)用的是“文本框”,,兩個(gè)按鈕用的是“命令按鈕”,,放置好控件之后再調(diào)整各控件的屬性來美化界面,也可根據(jù)實(shí)際需要插入圖片進(jìn)行修飾,。
評(píng)分系統(tǒng)主界面中包括8個(gè)評(píng)委的照片和每個(gè)評(píng)委給出的分?jǐn)?shù)(如圖),,功能按鈕包括“清空”、“最后得分”,。
各評(píng)分得分的文本框的名稱為TxtS1,,TxtS2……TxtS8,“最后得分”按鈕的名稱為CommandTotal,,第二張幻燈片用來顯示最后得分的標(biāo)簽名稱為L(zhǎng)blTotal,。
設(shè)計(jì)工作:打開VBA編輯器編寫代碼:
指定文件夾用于存放每組得分的統(tǒng)計(jì)文件
Const Path$ = "C:windowsdesktop評(píng)分系統(tǒng)"
全局變量,最后總分
Dim sum As Single
全局變量,,最后平均得分
Dim AverageScore As Single
全局變量,,記錄組次,保存后自動(dòng)加1
Dim GroupNum As Integer
清空“評(píng)委得分”,,清空“最后得分”
Private Sub CommandButton1_Click()
TxtS1.Text = ""
TxtS2.Text = ""
TxtS3.Text = ""
TxtS4.Text = ""
TxtS5.Text = ""
TxtS6.Text = ""
TxtS7.Text = ""
TxtS8.Text = ""
清空下一張幻燈片的最后總分
Slide2.LblTotal.Caption = ""
End Sub
“最后得分”按鈕
Private Sub CommandTotal_Click()
On Error GoTo er
Dim sum As Single
將8個(gè)評(píng)委的分?jǐn)?shù)相加得出總分sum
sum = sum + CSng(TxtS1.Text)
sum = sum + CSng(TxtS2.Text)
sum = sum + CSng(TxtS3.Text)
sum = sum + CSng(TxtS4.Text)
sum = sum + CSng(TxtS5.Text)
sum = sum + CSng(TxtS6.Text)
sum = sum + CSng(TxtS7.Text)
sum = sum + CSng(TxtS8.Text)
計(jì)算出最后得分(平均分),,精確到小數(shù)點(diǎn)后3位
AverageScore = Format(sum / 8, "#.###")
第二張幻燈片顯示最后得分
Slide2.LblTotal.Caption = AverageScore
寫入最后得分
If GroupNum>=1 AND GroupNum <= 5 Then
Open Path$ && "InpScore.txt" For Append As #1
Print #1, AverageScore
Close #1
End If
GroupNum = GroupNum + 1
er:
End Sub
新建一個(gè)模塊,寫入如下代碼,,此處為評(píng)獎(jiǎng)模塊,。
評(píng)選項(xiàng)一等獎(jiǎng)1名,二等獎(jiǎng)2名,,三等獎(jiǎng)3名,,故Counter變量設(shè)為6
Const Counter = 6
Public StrName(Counter) As String
Public SngScore(Counter) As Single
模塊功能:讀取得分文件,并對(duì)得分加以排序
Public Sub ReadDataInp()
On Error GoTo er
Open Path$ && "InpName.txt" For Input As #1
For i = 1 To Counter
Input #1, StrName(i)
Next
Close #1
Open Path$ && "InpScore.txt" For Input As #2
For i = 1 To Counter
Input #2, SngScore(i)
Next
Close #2
For i = 1 To Counter
For j = 1 To Counter
If SngScore(i) > SngScore(j) Then
a = SngScore(i): SngScore(i) = SngScore(j): SngScore(j) = a
b = StrName(i): StrName(i) = StrName(j): StrName(j) = b
End If
Next
Next
er:
End Sub
新建一張幻燈片,,用于顯示三等獎(jiǎng)獲獎(jiǎng)名單,,按鈕名稱為CmdDisply,6個(gè)文本框的名稱為TxtThirdPrize1……TxtThirdPrize6,。
代碼如下:
Private Sub CmdDisply_Click()
ReadDataInp
因?yàn)榉謹(jǐn)?shù)從高到低排序,,因此先輸出最后三組
TxtThirdPrize1.Text = StrName(4)
TxtThirdPrize2.Text = StrName(5)
TxtThirdPrize3.Text = StrName(6)
制作時(shí)你也可以加入其他的幻燈片用做修飾,比如制作一個(gè)帶動(dòng)態(tài)效果的開始畫面以及結(jié)束語等等,,然后在比賽時(shí)用投影機(jī)作為輸出,,一定會(huì)起到烘托賽場(chǎng)氣氛的作用。