Excel VBA vbYesNo MsgBox

时间:2016-06-17 20:41:46

标签: excel vba

我可以获得vbYesNo MsgBox语法的帮助吗? 我现在有这个,

For i = 1 To 10
    If Not (cells(i,1).value = "0" OR cells(i,1).value = "30") Then
        Range(cells(i, 1), cells(i, 1).End(xlToRight)).Select
        ans = MsgBox("Do you want to delete this row?", vbYesNo)
        If ans = vbYes Then
            'I do something
        Else
            'I want to exit this the If and continue on the For loop
            Exit If
        End If
    End If
Next i

我试过End If和Exit If但是没有用。我可以得到一些帮助吗?

2 个答案:

答案 0 :(得分:2)

For i = 1 To 10
    If ans = vbYes Then
        'Do whatever
    End If
Next i

如果您遗漏了Else,如果If条款未得到满足,则只会重新开始。

编辑: 删除循环中的行时,应始终反向循环。我做了几个其他的调整。见下文:

For i = 10 To 1 Step -1
    If Not (cells(i,1).value = "0" OR cells(i,1).value = "30") Then
        ans = MsgBox("Do you want to delete row " & Left(cells(i,1).Address(False,False),1) & "?", vbYesNo)
        If ans = vbYes Then
            Cells(i,1).EntireRow.Delete
        End If
    End If
Next i

答案 1 :(得分:0)

要删除行,我建议创建一个变量,然后使用范围的行并删除它。在开始时添加Dim myRng as Range,然后将您的.Select行替换为

Set myRng = Range(cells(i, 1), cells(i, 1).End(xlToRight))

然后在你的“如果是的话”,

myRng.EntireRow.Delete

然后完全删除Else

注意:我认为你的范围应该有效,但我不确定第二个cells(),所以如果它给你问题,请告诉我。