excel - 优化宏: table clear content

标签 excel vba

我经常使用 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

最佳答案

我找到了这个解决方案。 如果满足以下条件,则它有效:

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

enter image description here

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

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

关于excel - 优化宏: table clear content,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51156672/

相关文章:

java - 使用 apache POI 格式化 Excel 工作表

r - 下载 excel 文件 shiny linux

c# - 获取 Word 中菜单项的宏命令名称

excel - 如何使用输入框引用单元格?

excel - 在同一函数中创建和编辑 OLEObject 时出现编译器错误

excel - 删除所有具有自动填充值的行

excel - Excel 通过 Outlook 发送电子邮件时如何处理错误?

excel - 查找不按特定顺序重复的行并显示按重复次数排序的结果

excel - 如何在itextSharp(dll)中保留原始旋转页面

ms-access - 使用 QueryDefs 返回 Recordset 时出错