gpt4 book ai didi

vba - 使用 Excel VBA 删除 SpecialType 空白单元格

转载 作者:行者123 更新时间:2023-12-03 02:10:56 25 4
gpt4 key购买 nike

这个脚本“有效”,但前提是我运行它两次。任何人都知道为什么会发生这种情况?处理特殊类型有点像一场噩梦,我不确定这是否只是我的问题或已知的问题。在 Windows 7 上使用 Excel 2010。我也尝试重复该代码两次,但无济于事。我尝试将其放入 Do Until 中,但在第一次执行时总是陷入永远循环。我不知道为什么第二次执行它似乎有效

'Remove all Blank Cells

On Error Resume Next
For i = Cells.SpecialCells(xlCellTypeBlanks).Count To 1 Step -1
Cells.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Next i

If Cells.SpecialCells(xlCellTypeBlanks).Count = 0 Then
ActiveWorkbook.Close (True)

最佳答案

编辑:更新了答案,以显示删除“特殊单元格”范围如何不会重置工作表的 UsedRange 属性,以及这如何导致问题。

尝试在工作表上多次运行此子程序,无论是否注释掉对 Activesheet.UsedRange 的调用...

Sub Tester()
Dim rng As Range

On Error Resume Next
Set rng = ActiveSheet.Cells.SpecialCells(xlCellTypeBlanks)
On Error GoTo 0

If Not rng Is Nothing Then
Debug.Print "have empty cells"
rng.EntireRow.Delete
ActiveSheet.UsedRange
Else
Debug.Print "no empty cells"
End If

End Sub

保存并重新打开似乎也会重置UsedRange...

EDIT2你应该非常小心地使用它!它会删除整行即使该行中有非空白单元格。对于某些类型的数据布局来说是可以的,但对于其他类型的数据布局则不行。在某些情况下,当调用“删除”时,您可能还会看到错误“无法在重叠选择上使用该命令”。

关于vba - 使用 Excel VBA 删除 SpecialType 空白单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11994187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com