Это поздняя публикация, но здесь приведен код для выполнения всех требований, которые вы заявили, с помощью нескольких настроек существующего кода:
Public Sub D2()
Dim Zak As String
Dim B As Integer
Dim kzak As String
Dim k As Integer
Dim l As Integer
B = 0
kzak = ""
Do
Zak = InputBox("Amount of students")
If Val(Zak) > 0 Then
B = B + 1
kzak = kzak & Str(B) & (" class") & (" ") & ("Students ") & Zak & Chr(10)
k = k + Val(Zak)
End If
Loop Until Zak = ""
If B > 0 Then
l = k / B
MsgBox kzak & Chr(10) & ("At school is ") & Str(k) & (" students") & (", on avarage ") & Str(l) & (" in a class")
End If
End Sub
Обратите внимание на некоторые изменения, которые я сделал.
Сначала я объявил переменные более подходящим образом. Также с вашим кодом k
был бы вариант.
Во-вторых, мне удалось удалить хак B - 1
, а также убедиться, что у `B 'есть значение, чтобы избежать ошибки деления на ноль.
В-третьих, этот код обрабатывает Cancel из InputBox.