退出if语句而不退出子

时间:2019-06-04 02:39:56

标签: vba if-statement exit

我有一个VBA代码,该代码删除了空白单元格,从而使列中的数据向下移动到顶部。我要解决两件事。一,我不想退出子程序,我想退出if语句。我读过您可以退出循环,whiles,fors等。但是不能退出。我不想退出子程序,因为我的子程序中包含更多代码。有什么建议吗?

如果列顶部已经有数据,我还会遇到在代码中添加另一行以运行的问题。

extern int evalstring __P((char *, const char *, int));

我希望它能够运行以下三种情况。第一个在标题下面的行中包含数据。第二个有几个空单元格。第三个具有所有空单元格。 1不应更改,2应当更改以匹配1的格式,而3则不应执行任何操作。上面的代码可以完成2和3,但不能完成1。

<BASH_DIR>/include/bash/builtins/common.h

2 个答案:

答案 0 :(得分:2)

也许是这样,注意以下几点:

  • 您不需要两条 Application.ScreenUpdating = True行。您可能会摆脱两者。
  • 您需要处理没有空白单元格的可能性(第1列)。

Sub Remove_Empties()

    Dim Last As Long
    Last = Cells(Rows.Count, "AD").End(xlUp).Row

    If Last <> 1 Then
        Dim Mcol As Range
        Set Mcol = Range("AD2:AD" & Last) 'contains any value

        Dim cellsToDelete As Range

        On Error Resume Next
        Set cellsToDelete = Mcol.SpecialCells(xlCellTypeBlanks)
        On Error GoTo 0

        If Not cellsToDelete Is Nothing Then
            cellsToDelete.Delete shift:=xlUp
        End If
    End If

End Sub

或略有凝结:

Sub Remove_Empties()

    Dim Last As Long
    Last = Cells(Rows.Count, "AD").End(xlUp).Row

    If Last <> 1 Then
        On Error Resume Next
        Range("AD2:AD" & Last).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
        On Error GoTo 0 
    End If

End Sub

答案 1 :(得分:0)

我将添加另一个答案,您可以在前进的逻辑(代码)中使用它。使用简单的GoTo语句将脱离If。例如:

Sub UsingGoTo()

    If Last = 1 Then
        'do something
        GoTo CheckComplete
    Else
        'if not maybe exit sub?
        Exit Sub
    End If

CheckComplete:
    'continue with program

End Sub