excel - 使用引用删除单元格内容的宏

标签 excel vba

我有一个要删除的单元格引用列表。引用列表在工作表“test_url”中。引用列表指向另一个工作表“main_lists”中要删除的单元格。

我所追求的是一个宏,它获取“test_url”表中列出的所有引用,并在“main_lists”表中选择它们的单元格并删除它们。

下面的宏是我为两个引用记录的,只是为了证明我的问题需要我从“test_url”表中复制引用,然后将其粘贴到“main_urls”表的 NameBox 中以选择指定单元格的内容然后删除其内容。这个过程是手动完成的,每次一个单元格,以获得 10-20 个地址/引用的列表。然而,最近这个列表有超过 2000 个条目并且还在增长:

Sub DeletePermittedCells()
'DeletePermittedCells Macro
Sheets("test_urls").Select
Range("B2").Select
Sheets("test_urls").Select
Selection.Copy
Sheets("main_lists").Select
Application.Goto Reference:="R200045C1"
Application.CutCopyMode = False
Selection.ClearContents
Sheets("test_urls").Select
Range("B3").Select
Selection.Copy
Sheets("main_lists").Select
Application.Goto Reference:="R247138C1"
Application.CutCopyMode = False
Selection.ClearContents
Sheets("test_urls").Select
End Sub

有人可以帮忙解决这个问题吗?

最佳答案

试试这个:

Sub DeletePermittedCells()
    Dim rng As Range
    Dim arr, c

    With Sheets("test_urls")
        'storing data in array makes your code much faster
        arr = .Range("B2:B" & .Cells(.Rows.Count, "B").End(xlUp).Row).Value
    End With

    With Sheets("main_lists")
        Set rng = .Range(arr(1, 1))
        For Each c In arr
            Set rng = Union(rng, .Range(c))
        Next
    End With

    rng.ClearContents
End Sub

将地址存储在数组中(而不是直接从工作表中读取每个单元格)使您的代码更快。

请注意,代码假定您的地址存储在 B2:B & lastrow 范围内。在哪里 lastrow - 是在列 B 中具有数据的最后一个单元格的行

关于excel - 使用引用删除单元格内容的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22269998/

相关文章:

excel - VBA代码将文本框中所选内容中的所有数字加粗?

vba - 我在重置单元格值 excel 时做错了什么

excel - 当数组长度小于提供的数组时,excel中 "Small"函数的处理错误

字符串数组上的 VBA "Type mismatch: array or user-defined type expected”

excel - 隐藏/取消隐藏特定组

javascript - JavaScript 中的 VBA 等效项,用于 Google 表格的 Google Apps 脚本

excel - 在 VB 问题中使用 Excel 函数

excel - 结合标准/宏VBA

excel - 输入框错误处理

excel - 如何在模块中声明公共(public)变量并访问工作表对象中的变量?