Yahoo奇摩知識+將於 2021 年 5 月 4 日 (美國東部時間) 終止服務。自 2021 年 4 月 20 日 (美國東部時間) 起,Yahoo奇摩知識+服務將會轉為唯讀模式。其他Yahoo奇摩產品與服務或您的Yahoo奇摩帳號都不會受影響。如需關於Yahoo奇摩知識+ 停止服務以及下載您個人資料的資訊,請參閱說明網頁。

誰可以幫我解說這些程式碼嗎?

就解釋每個步驟是怎樣子的?什麼意思??

題目:題目:某班學生人數不詳,欲輸入每一個學生的VB成績,當輸入-1時MsgBox做再次確認是否已全部輸入,若是才結束,然後要計算全班人數.及格人數.不及格人數.全班平均分數

程式碼:

Dim Student As Integer

Dim Yes As Integer

Dim No As Integer

Dim Avg As Single

Dim Total As Single

Private Sub Form_Activate()

Do

Student = Student + 1

scr = Val(InputBox("請輸入第" & Student & "位學生VB成績"))

If scr = -1 Then

x = MsgBox("是否已全部輸入", vbYesNo)

If x = vbYes Then

Student = Student - 1

Avg = Total / Student

Print "全班人數" & Student

Print "及格人數" & Yes

Print "不及格人數" & No

Print "全班平均分數" & Avg

Exit Do

Else

Student = Student - 1

No = No - 1

scr = 0

End If

End If

If scr >= 60 Then

Yes = Yes + 1

ElseIf scr >= 0 And scr <= 59 Then

No = No + 1

End If

Total = Total + scr

Loop

End Sub

1 個解答

評分
  • 水月
    Lv 6
    1 0 年前
    最佳解答

    Dim Student As Integer  '宣告Student為整數(全班人數)

    Dim Yes As Integer  '宣告Yes為整數(及格人數)

    Dim No As Integer  '宣告No為整數(不及格人數)

    Dim Avg As Single  '宣告Avg為單精確數(全班平均分數)

    Dim Total As Single '宣告Total為單精確數(加所有成績用的)

    Private Sub Form_Activate()

    Do           '使用Do...Loop迴圈

    Student = Student + 1 '一開始Student為0,所以先讓它加1,迴圈每跑一圈就會加1,表示輸入第幾個學生人數了

    scr = Val(InputBox("請輸入第" & Student & "位學生VB成績")) '顯示輸入方塊,將輸入的成績傳給scr

    If scr = -1 Then '判斷輸入的數值是否為-1

    x = MsgBox("是否已全部輸入", vbYesNo) '顯示訊息方塊,判斷是或否的值傳給x

    If x = vbYes Then '判斷x為是或否

    Student = Student - 1 '學生數減1,因為最後一個輸入的值為-1,並不是真正的學生數,所以必須減1

    Avg = Total / Student '將總成績除以學生數傳給Avg(全班平均分數)

    Print "全班人數" & Student '印出全班人數

    Print "及格人數" & Yes '印出及格人數

    Print "不及格人數" & No '印出不及格人數

    Print "全班平均分數" & Avg '印出全班平均分數

    Exi Do '離開迴圈

    Else '如果訊息方塊選否就執行這裡,不執行上面那幾行

    Student = Student - 1 '和上面意思一樣

    No = No - 1 '不及格人數減1,因為下一行scr=0,所以不及格人數會多一個,必須減1

    scr = 0 'scr設為0,否則下面Total相加的時候會錯誤

    End If '結束判斷式

    End If

    If scr >= 60 Then '這幾行就是判斷成績是否及格,及格Yes+1,不及格No+1,計算及格,不及格人數

    Yes = Yes + 1

    ElseIf scr >= 0 And scr <= 59 Then

    No = No + 1

    End If

    Total = Total + scr '將輸入的成績相加

    Loop

    End Sub

還有問題?馬上發問,尋求解答。