这将是一个非常简单的问题。 但我不确定为什么这不适用于我的excel vba代码。
Sheets("I- ABC").Select
If IsEmpty(Range("A3").Value) = True And _
IsEmpty(Range("A4").Value) = True And _
IsEmpty(Range("A5").Value) = True And _
IsEmpty(Range("A6").Value) = True Then
Sheets("I- ABC").Delete
End If
答案 0 :(得分:0)
你得到什么类型的错误?我尝试了这段代码,Excel只显示警告信息:
您可以添加以下内容来避免此消息:
Application.DisplayAlerts = False
和
Application.DisplayAlerts = True
分别在代码的开头和结尾。
- 编辑代码
Sub Example()
Application.DisplayAlerts = False
With Sheets("I- ABC")
If Application.WorksheetFunction.CountA(.Range("A3:A6")) = 0 Then
.Delete
End If
End With
Application.DisplayAlerts = True
End Sub
答案 1 :(得分:0)
尝试与此相似
Sub Test()
Application.DisplayAlerts = False
With Sheets("Sheet1")
Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
Application.DisplayAlerts = True
End Sub
PS:它适用于我并删除“A:A``
中包含空单元格的行@Tim Williams建议的方法在我的情况下也按照以下代码为我工作
Sub Test6()
Dim r As Range, rows As Long, i As Long
Set r = ActiveSheet.Range("A3:A6")
rows = r.rows.Count
For i = rows To 1 Step (-1)
If WorksheetFunction.CountA(r.rows(i)) = 0 Then r.rows(i).Delete
Next
End Sub
即使我们使用Application
代替WorksheetFunction
答案 2 :(得分:0)
如果If Application.CountA(Range("A3:A6")) = 0 Then
没有像蒂姆建议那样工作那么这意味着单元格有空格或不可打印的字符。
试试这个
Sub Sample()
Dim pos As Long
With Sheets("I- ABC")
pos = Len(Trim(.Range("A3").Value)) + _
Len(Trim(.Range("A4").Value)) + _
Len(Trim(.Range("A5").Value)) + _
Len(Trim(.Range("A6").Value))
If pos = 0 Then
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
Else
MsgBox "The cells are not empty"
End If
End With
End Sub
答案 3 :(得分:0)
随着skkakkar的想法扩大。
Sub Hello()
Dim rng As Range
Application.DisplayAlerts = 0
On Error GoTo er
Set rng = Range("A3:A6").SpecialCells(xlCellTypeConstants, 23)
Exit Sub
er: MsgBox "ActiveSheet.Delete" 'delete sheet
End Sub
答案 4 :(得分:0)
如果空格是问题,那么您可以尝试以下代码:
Public Sub RemoveIfEmpty()
Application.DisplayAlerts = False
With Sheets("I- ABC")
If Trim(.Range("A3") & .Range("A4") & .Range("A5") & .Range("A6")) = "" Then
.Delete
End If
End With
Application.DisplayAlerts = True
End Sub