vba - 尝试删除 VBA 中的单元格范围时出错

标签 vba excel

我创建了一个小代码来从 2 个单独的工作表和以字母 N 开头的工作表中删除一系列单元格,但我的代码总是给我错误或 Excel 崩溃。使用 ClearContents 方法的第一行和第二行代码给了我这些错误。

Error from the code execution

我的代码:

'clearing ranges
ThisWorkbook.Worksheets("Sheet1").range("A4", range("AY4").End(xlDown)).ClearContents
ThisWorkbook.Worksheets("Sheet2").range("A3", range("AK3").End(xlDown)).ClearContents

'deleting sheets
For Each sh In ThisWorkbook.Worksheets
    If Left(sh.Name, 1) = "N" Then
        ThisWorkbook.Worksheets(sh.Name).Delete
    End If
Next sh

谢谢您的帮助!

最佳答案

编辑 ClearContents 添加一些代码问题

清除内容 问题

你写了

I want to delete the range from A4 until the right down corner of AY4



现在取决于“AY4 的右下角”的意图

它应该是 AY 列上的最后一个非空值,然后使用:
With ThisWorkbook.Worksheets("Sheet001")
    .Range("A4", .Cells(.Rows.Count, "AY").End(xlUp)).ClearContents
End With

您可能需要更多代码来处理“AY”列中的第一个非空单元格位于第 4 行上方的情况

工作表删除

您可能想尝试“数组”方法来利用 Item 的数组风格。 Worksheets 的属性(property)收集并一次性删除工作表:
Option Explicit

Sub ws()
    Dim sh As Worksheet
    Dim shtsToDelete As String

    With ThisWorkbook
        For Each sh In .Worksheets
            If Left(sh.name, 1) = "N" Then shtsToDelete = shtsToDelete & sh.name & "\" '<-_| store sht names in a string delimiting them with an invalid character for sheet names
        Next sh
        If shtsToDelete <> "" Then '<--| if any sheet to be deleted has been found
            Application.DisplayAlerts = False '<--| disable alerts to prevent popping out of msgbox prompting you to confirm sheets deletion
            .Worksheets(Split(Left(shtsToDelete, Len(shtsToDelete) - 1), "\")).Delete '<--| delete list-sheets in one shot
            Application.DisplayAlerts = True '<--| enable alerts back
        End If
    End With
End Sub

关于vba - 尝试删除 VBA 中的单元格范围时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39160432/

相关文章:

excel - VBA 使用单元格引用激活单元格

excel - 如何更快地复制和粘贴?

VBA "Compile Error: Statement invalid outside Type Block"

excel - 在 Excel 中对文本字符串使用 if 和 A​​ND 的组合

excel - SUMIFS(不为空,等条件)

Excel VBA : Scripting. 字典计算

sql - 使用vba将sql数据导入excel

Excel:选择单元格中的最后一个或多个数字

excel - 如何使用 VBA 调整 Excel 中表格/ListObject 的大小

excel - VBA退出内循环但返回内循环