【发布时间】:2018-11-05 19:43:35
【问题描述】:
下面的代码是计算一所学校的最终学生人数和一个班级的平均学生人数。
它一直在运行代码,直到用户输入“0”。
如何确保“0 类”不会被计为额外的类?目前我通过从 B 中减去 -1 来实现它,但这不是一个优雅的解决方案 - 计算是正确的,但该类仍然列在 final MsgBox 中。
顺便说一句,如果我想在用户将单元格留空时结束循环,我该怎么办?简单的Loop Until Zak = "" 不起作用。
非常感谢,
Sub D1()
Dim Zak As Byte
Dim B As Byte, C As Byte
Dim kzak As String
Dim ktrid
Dim trid As Byte
Dim k, l As Integer
B = 0
kzak = ""
Do
Zak = InputBox("Amount of students")
B = B + 1
kzak = kzak & Str(B) & (" class") & (" ") & _
("Students ") & Str(Zak) & Chr(10)
k = k + Zak
Loop Until Zak = 0
C = (B - 1)
l = k / C
MsgBox kzak & Chr(10) & ("At school is ") & Str(k) & (" students") & _
(", on avarage ") & Str(l) & (" in a class")
End Sub
【问题讨论】:
-
不确定这是否有帮助,但如果您使用
Application.InputBox,您可以限制可以输入的数据类型。例如在可选参数中设置Type:=1使得输入框只接受数字。你可以阅读更多关于它here -
请注意
Dim k, l As Integer仅声明l As Integer但k As Variant您必须为每个 变量Dim k As Long, l As Long指定一个类型。我还推荐在 VBA 中使用 always to use Long instead of Integer,因为在Integer中根本没有任何好处。