我有一个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
答案 0 :(得分:2)
也许是这样,注意以下几点:
Application.ScreenUpdating = True
行。您可能会摆脱两者。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