【问题标题】:How to nest multiple IF statements in Visual Basic 6?如何在 Visual Basic 6 中嵌套多个 IF 语句?
【发布时间】:2013-03-29 17:57:11
【问题描述】:

如何在 Visual Basic 6 中在另一个 if 中使用 if

例如,在 C++ 中,我可以以 { 开始我的语句并以 } 结束它们,并且我可以在第一条语句中使用另一个 if

例如:

if m>3
{       .....
     if a>5
      {
       ......
      }
     else {....}
} else ........

...但是在 Visual Basic 中没有 { } 或类似的东西

我想编写一个程序来接收用户的时间并从中减少 4:30!例如,当用户运行它时,它会问:在德黑兰几点钟了?和用户输入时间(例如 16:30)然后程序从它减少 4 小时 30 分钟!并打印:格林威治标准时间是:12:00!我会更新我的帖子并输入我的代码!请阅读!

Option Explicit

Private Sub Command1_Click()
    Cls
    Dim h As Integer, m As Integer, hm As Integer, mm As Integer, t As Integer
    Dim fh As String, fm As String, fhm As String, fmm As String

    t = InputBox("Enter time")
    h = t \ 100
    m = t Mod 100

    Select Case h

    Case 0 To 24

        If m < 60 Then
            If m >= 30 Then

                hm = h - 4
                mm = m - 30

                If h < 10 Then fh = Format(h, String(2, "0")) Else fh = h
                If m < 10 Then fm = Format(m, String(2, "0")) Else fm = m
                If hm < 10 Then fhm = Format(hm, String(2, "0")) Else fhm = hm
                If mm < 10 Then fmm = Format(mm, String(2, "0")) Else fmm = mm

                Print
                Print "      Tehran  Time is  :   "; fh; ":"; fm
                Print
                Print "      GMT       Time is  :   "; fhm; ":"; 
            Else
                hm = h - 5
                mm = m + 30

                If h < 10 Then fh = Format(h, String(2, "0")) Else fh = h
                If m < 10 Then fm = Format(m, String(2, "0")) Else fm = m
                If hm < 10 Then fhm = Format(hm, String(2, "0")) Else fhm = hm
                If mm < 10 Then fmm = Format(mm, String(2, "0")) Else fmm = mm

                Print
                Print "      Tehran  Time is  :   "; fh; ":"; fm
                Print
                Print "      GMT       Time is  :   "; fhm; ":"; fmm
            End If
        End If

    Case Else

        Beep
        Print
        Print "   Time is wrong !!!  Try again "

    End Select

End Sub

Private Sub Command2_Click()
        End
End Sub

Private Sub Form_Load()

End Sub

【问题讨论】:

  • 只在第一个 if 语句下开始第二个 if 语句。然后为第二个 if 语句设置 else 条件,然后结束第一个 if 语句。由于您没有费心发布有效的 VB 6,因此我不会给出确切的解决方案。

标签: vb6


【解决方案1】:

VB 中的 If 子句以“End If”结尾(不区分大小写)。没有任何括号。

你可以嵌套任意数量的 if 子句,只要你关闭它们:

If ... Then
    *Do stuff*

    If ... Then
        *Do more stuff*
    End If
End If

【讨论】:

    【解决方案2】:

    单行 If 语句也可以嵌套:

    If (a) Then [a_stuff] : If (b) Then [a_and_b_stuff] Else [a_and_notb_stuff] Else [nota_stuff]
    

    请注意,[a_stuff] 不能出现在 [a_and_notb_stuff] 之后,因为无法判断 b 的 Else 语句在哪里结束,因此嵌套 If 语句之后的子句中不能出现任何内容。

    *_stuff 的任何部分都可以为空。但是你可能对空的[a_and_notb_stuff] 有一些困难,因为这里的VB6 IDE 似乎有点喜怒无常,并且会尝试在那里插入一个无效的第三个'Else' 语句。要解决此问题,您可以使用“:”代替[a_and_notb_stuff]。 IDE 将删除冒号,但不会插入另一个 Else 语句。

    附录:我应该指出,整个帖子应该被视为信息,而不是推荐。像这样嵌套单行 If 语句会导致代码非常不可读且容易出错。

    【讨论】:

    • 你想要什么例子?一个简单的 If-Else 语句是 If n &gt; 10 Then MsgBox "n &gt;= 10" Else MsgBox "n &lt;= 10"。可以在 MsgBox 语句之后或代替 MsgBox 语句插入进一步的 If-Else。但老实说,嵌套单行 If 语句是个坏主意。我已经更新了我的帖子以指出这一点。
    • 我的朋友!我想编写一个程序,从用户那里接收时间并从中减少 4:30!例如,当用户运行它时,它会问:在德黑兰几点钟了?和用户输入时间(例如 16:30)然后程序从它减少 4 小时 30 分钟!并打印:格林威治标准时间是:12:00!我会更新我的帖子并输入我的代码!请阅读!
    • 嗨。我建议进行编辑以修复代码的格式,但问题超出了原始问题的范围,因此我认为您应该将其取出并单独发布。
    • 此方法还允许在 VB6 中进行半短课程:If Person Is Not Nothing Then If Person.Age &gt;= 17 Then Call Person.Drive(Car)
    猜你喜欢
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    • 2012-02-20
    相关资源
    最近更新 更多