删除表其中一行的Excel VBA

问题描述 投票:0回答:2

我创建了一些表,愿与只有一行删除的。我曾尝试以下两种代码,但他们没有工作。

WSCount = Worksheets.Count
For l = 1 To WSCount
Worksheets(l).Activate
If IsEmpty(ActiveSheet.Cells(2, 1)) Then
ActiveSheet.Delete
WSCount = WSCount - 1
l = l - 1
End If
Next l

下面是第二个。

For Each Worksheet in ActiveWorkbook.Worksheets
If IsEmpty(ActiveSheet.Cells(2,1)) Then
ActiveSheet.Delete
End If
Next

我遇到的问题是,当我删除的页面,它在for循环食堂。这直接发生在第一个代码。在第二个代码,问题是,我不认为激活板材所以Excel不删除它。我已经把一个for循环在一个太,这使我遇到同样的问题,在第一个代码。

有可能是一个简单的解决方案,但我的知识是有限的,因此所有我能想到的是把一个for循环。

excel vba
2个回答
4
投票

这就是为什么我们总是循环向后删除表,行,列时...

Sub x()

Dim WSCount As Long, l As Long

WSCount = Worksheets.Count

For l = WSCount To 1 Step -1
    If IsEmpty(Worksheets(l).Cells(2, 1)) Then
        Worksheets(l).Delete
    End If
Next l

End Sub

正如斯科特说,你的第二位将这样的工作在你的现有代码activesheet永远不会改变,所以你永远只能删除单张。

For Each Worksheet in ActiveWorkbook.Worksheets
  If IsEmpty(worksheet.Cells(2,1)) Then
    worksheet.Delete
   End If
Next

同样在how to avoid select读了。


1
投票
Sub deleteSheet()
Application.DisplayAlerts = False
For Each sh In ThisWorkbook.Worksheets
    If IsEmpty(sh.Cells(2, 1).Value) Then
        sh.Delete
    End If
Next
Application.DisplayAlerts = True
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.