VBA确定最高价值

时间:2018-11-05 21:52:21

标签: excel vba excel-vba while-loop

理论上,下面的程序应读取学生的姓名和身高,如果在“螺柱”中插入了空值,则循环应结束。最终目标是显示最高学生的姓名和身高。我使用变量“ K”来标识哪个值是循环中的最高值,但是我遇到了死胡同。 不幸的是,我坚持:

FIRST当插入空的“ Stud”时结束循环;第二个确定最高学生的名字 第三,最后在MsgBox中创建一个表格,说明每个学生的姓名和身高

非常感谢,

Sub C4()

Dim Stud As String
Dim High As Single
Dim cat As String
Dim k As Byte

        Stud = InputBox("Name")
        High = InputBox("Hight[cm]")

    Do While Stud <> ""

        k = High

        cat = cat & Stud & ("   ") & Str(High) & Chr(10)
        Stud = InputBox("Name")
        High = InputBox("Hight[cm]")
            If k > High Then
        High = k
            Else: High = High
        End If
    Loop

        MsgBox cat

End Sub

1 个答案:

答案 0 :(得分:0)

在这里用尽可能少的更改来更正代码,以便您可以了解出了什么问题。在这种情况下,我也建议使用用户表单:

Option Explicit

Sub C4()

Dim Stud As String
Dim High As Long
Dim TallestStudent As String
Dim cat As String
Dim k As Long

        Stud = InputBox("Name")
        High = InputBox("Height[cm]")
        cat = Stud & ("   ") & Str(High) & Chr(10)
        k = High
        TallestStudent = Stud

    Do While Stud <> ""

        Stud = InputBox("Name")

        If Stud = "" Then
            Exit Do
        End If

        High = InputBox("Height[cm]")
            If k < High Then
                k = High
                TallestStudent = Stud
            End If

        cat = cat & Stud & ("   ") & Str(High) & Chr(10)

    Loop

        MsgBox cat & Chr(10) & "The Tallest Student was: " & TallestStudent

End Sub

因此,使您的三点切实可行:
第一点:在这里,您必须确保在没有给出名称后立即退出循环(使用Exit Do)
第二点:在最后完成。您的代码中High不清楚。现在是每个学生的身高,新的Dim TallestStudent给出了最高学生的名字。
第三点:现在,消息返回姓名和身高以及不在代码中的最高学生。