结束如果不加阻止,则-缩进,但仍然不起作用

时间:2018-10-10 08:31:17

标签: vba

我总是收到错误“ End If Without Block If”,尽管对于开头的If我有一个End If,并且还尝试缩进语句。怎么了?

If TextBox1.Text = "" Then

    MsgBox "Please Enter Value"

Else:
    Sheets("confirmation").Range("F7").Value = ComboBox1.Value
    Sheets("confirmation").Range("F9").Value = TextBox1.Value

    For i = 20 To 1 Step -1
        Rows(i & ":33").EntireRow.Hidden = False
        Cells(13 + i, 1).Value = 20
        i = i + 1
    Exit For
    UserForm1.Hide
End If

2 个答案:

答案 0 :(得分:4)

Else之后删除冒号。

Exit For替换为Next。使用Exit For,您可以提前退出For循环。

正如@Bill Hileman在评论中所述,For循环将无限运行,因为i在循环中递增,但在For循环正文中递减。

If TextBox1.Text = "" Then

    MsgBox "Please Enter Value"

Else
    Sheets("confirmation").Range("F7").Value = ComboBox1.Value
    Sheets("confirmation").Range("F9").Value = TextBox1.Value

    For i = 20 To 1 Step -1
        Rows(i & ":33").EntireRow.Hidden = False
        Cells(13 + i, 1).Value = 20
        i = i + 1
    Next
    UserForm1.Hide
End If

答案 1 :(得分:0)

您还需要用next指示for循环的结束位置。并且您需要删除:

If ... Then
  ....
Else

  For ...
    ...
    Exit For
  Next

End if