excel - 使用一行 Excel VBA 删除工作表
问题描述
我正在创建一些工作表,并想删除只有一行的工作表。我尝试过遵循两个代码,但它们不起作用。
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 循环。
解决方案
这就是为什么我们在删除工作表、行、列时总是向后循环......
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
正如斯科特所说,您的第二位将起作用,因为在您现有的代码中,活动表永远不会改变,所以您只会删除一张表。
For Each Worksheet in ActiveWorkbook.Worksheets
If IsEmpty(worksheet.Cells(2,1)) Then
worksheet.Delete
End If
Next
另请阅读如何避免 select。
推荐阅读
- ios - What does `_ = something` mean?
- kubernetes - 如果 VirtualService 只是 Service 的普通代理,我们应该定义它吗?
- java - spring JpaRepository 方法的存根
- amazon-web-services - AWS 部署组创建失败
- python - Pyinstaller and Pyro4
- html - java - 如何在百里香中的两个字符串之间添加新行?
- javascript - 在没有 Web 服务器的情况下发出 CORS AJAX 请求?
- python - 从目录中选择一个随机文件并发送它(Python,MIME)
- javascript - DynamoDB 更新 ExpressionAttributeValues
- ruby-on-rails - PG::UndefinedTable:错误:关系“房间”不存在