萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 辦公室軟體 >  >> PowerPoint 教學 >> PPT 進階技巧

用 PowerPoint VBA 製作即時競賽評分系統:含評委打分、自動平均、排名顯示完整代碼

PowerPoint 內建 VBA (Visual Basic for Applications) 能將簡報變身互動應用程式。本文實戰分享一套「英語會話比賽即時評分系統」:8 位評委即時打分、自動計算平均分、寫入檔案、排名顯示頒獎,完整代碼與邏輯解析,可直接套用修改。

系統架構與檔案準備

  • 資料夾:`C:\Windows\Desktop\評分系統\`(需自行建立)。
  • 文字檔:`Name.txt`(參賽隊名,每行一隊)、`InpScore.txt`(自動產生,存放各組平均分)。
  • 簡報結構:
    - 第 1 張:主介面(8 評委照片、分數輸入框、清空/最後得分按鈕)。
    - 第 2 張:顯示最終平均分標籤 `LblTotal`。
    - 第 3 張:三等獎得獎名單顯示(6 個文字框 `TxtThirdPrize1~6`)。

核心 VBA 代碼模組

模組 1:主介面程式碼(投影片 1)

' 全域變數
Const Path$ = "C:\Windows\Desktop\評分系統\"
Dim sum As Single, AverageScore As Single, GroupNum As Integer

' 清空按鈕
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
    sum = 0
    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)
    
    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

模組 2:標準模組(插入 > 模組)——排名邏輯


Const Counter = 6
Public StrName(Counter) As String
Public SngScore(Counter) As Single

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

模組 3:頒獎頁程式碼(投影片 3)


Private Sub CmdDisply_Click()
    ReadDataInp
    ' 分數已由高排至低,第 4-6 名為三等獎
    TxtThirdPrize1.Text = StrName(4)
    TxtThirdPrize2.Text = StrName(5)
    TxtThirdPrize3.Text = StrName(6)
End Sub

控制項命名對照表(關鍵)

控制項名稱說明
評委分數文字框 (8個)TxtS1 ~ TxtS8對應 8 位評委
清空按鈕CommandButton1清除所有分數與結果
最後得分按鈕CommandTotal計算平均、寫檔、換組
最終分數標籤 (投影片2)LblTotal顯示平均分
三等獎顯示框 (投影片3)TxtThirdPrize1~3顯示第 4-6 名隊名
顯示按鈕 (投影片3)CmdDisply觸發排名讀取顯示

部署與使用流程

  1. 將簡報另存為 「PowerPoint 啟用巨集的簡報 (*.pptm)」。
  2. 確保巨集安全性設為「啟用所有巨集」(檔案 > 選項 > 信任中心 > 巨集設定)。
  3. 比賽現場:投影機連接筆電,雙螢幕擴充模式,簡報者檢視操作,投影幕只看結果頁。
  4. 每組比賽結束:評委填分 → 按「最後得分」 → 系統自動計算、存檔、換組 → 下一組繼續。
  5. 比賽結束:切換至第 3 張投影片,按「顯示」按鈕 → 依序顯示三等獎得主。

擴展方向

  • 加入一/二等獎顯示頁、動態音效、得獎動畫。
  • 改用 Excel/Access 做資料庫,支援更多隊伍、複雜計分規則(去最高最低分、加權)。
  • 整合計時器、抽籤、投票等模組,打造完整活動控制台。

PowerPoint + VBA 的組合,讓非程式設計師也能快速開發專用小工具。這套評分系統經實戰驗證穩定可靠,歡迎依需求修改擴展。

copyright © 萬盛學電腦網 all rights reserved