首页 > 解决方案 > 优化宏:表格清空内容

问题描述

我经常使用 Excel 表格。当我尝试使用公式、其他宏等时,我使用一个非常简单的宏来清除表……因为我不想删除指定的表,所以我锁定了它们。我有 5000 到 10000 个单元格要清除,这非常长,因为我的计算机并不是真正为此类任务而构建的。

这是我的实际宏,它运行良好,但为了更快,我可以改变一些东西吗?我知道逐个检查所有单元格需要很长时间,但我真的有选择吗?我必须准确说明一个表已完全清除或根本没有清除(锁定)而且我无法准确说明要清除或不清除的表的名称,因此我选择遍历每个表并仅在未锁定时进行清理.

Sub RaZ_activesheet_table()
Dim tbl As ListObject
Dim retour As Long
Dim c As Range
Application.ScreenUpdating = False
retour = MsgBox(Prompt:="Vider les tableaux?", Buttons:=vbOKCancel)
If retour = vbOK Then
For Each tbl In ActiveSheet.ListObjects
    For Each c In Range(tbl.Name)
        If c.Locked = False Then
            c.ClearContents
        End If
    Next c
Next tbl
End If
Application.ScreenUpdating = True
End Sub

标签: excelvba

解决方案


我找到了这个解决方案。如果:

  1. 你先解锁你所有的手机
  2. 接下来,保护您不想清除的单元格
  3. 最后,您需要使用第一个选项添加工作表保护

在此处输入图像描述

之后,您可以应用这个简单的代码:

sub test()
On Error Resume Next
    ActiveSheet.UsedRange.Value = vbNullString
On Error GoTo 0
end sub

在你的情况下,你会有这样的事情:

Sub RaZ_activesheet_table()

Dim tbl As ListObject
Dim retour As Long
Dim c As Range

Application.ScreenUpdating = False

retour = MsgBox(Prompt:="Vider les tableaux?", Buttons:=vbOKCancel)

    If retour = vbOK Then
        For Each tbl In ActiveSheet.ListObjects

            On Error Resume Next
                tbl.UsedRange.Value = vbNullString
            On Error GoTo 0

        Next tbl
    End If

Application.ScreenUpdating = True
End Sub

推荐阅读