Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel ClearContents删除超出范围的数据_Excel_Vba - Fatal编程技术网

Excel ClearContents删除超出范围的数据

Excel ClearContents删除超出范围的数据,excel,vba,Excel,Vba,我试图让这段代码在我带来新数据之前清除某个范围的内容。该范围在上面的行中有一个标题,该标题也将被清除,尽管该范围不包括它 我试着在运行它之前指定范围并选择其他单元格,但标题还是被清除了 With MyResults LastRowResults = Range("A16:K" & Rows.Count).End(xlUp).Row .Range("A$16:$K$" & LastRowResults).Select Selection.SpecialCel

我试图让这段代码在我带来新数据之前清除某个范围的内容。该范围在上面的行中有一个标题,该标题也将被清除,尽管该范围不包括它

我试着在运行它之前指定范围并选择其他单元格,但标题还是被清除了

With MyResults
    LastRowResults = Range("A16:K" & Rows.Count).End(xlUp).Row
    .Range("A$16:$K$" & LastRowResults).Select
    Selection.SpecialCells(xlCellTypeConstants, 23).Select
    Selection.ClearContents
它正在清除第15行,甚至是A9单元格的内容,有时我会运行它


我们的目标是清除此范围,保持某些列中的公式完好无损,以便将筛选后的数据带入,形成所需的报告。

避免VBA中的
选择
激活
在性能和编码能力方面创造奇迹()。关于您的代码,如果第16行是默认值,请尽量避免使用标题:

With MyResults
    LastRowResults = .Range("A17:K" & Rows.Count).End(xlUp).Row
    MsgBox LastRowResults 'Consider removing this line, once the code works.
    Dim deleteArea As Range
    Set deleteArea = .Range("A$17:$K$" & LastRowResults)
    deleteArea.ClearContents
End With
在OP代码中,该行的
范围之前缺少

LastRowResults = .Range("A17:K" & Rows.Count).End(xlUp).Row
因此,
lastRowResults
ActiveSheet
或代码所在的工作表(如果不在模块中)获取其值。
在使用MyResult的
中非常重要

通常,在最后一行搜索多个列时,应该准确定义预期的输出。例如,对于最大的最后一行,类似这样的方式更好:

LastRowResults = .Columns("A:K").Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row

如果列A中最后一个填充的单元格是(比如)第9行,这是否会阻止
.End(xlUp)
使范围为“负”呢?我认为这是导致OPs的原因frustration@Marcucciboy2-但我想,对于
lastRowResults
,在
范围
之前缺少
,这是一般原因-它占用了另一个工作表的最后一行,因此导致了“负范围”。遗憾的是,它仍然会删除上面的行内容。今天晚些时候我将尝试另一种方法,并让您了解这是如何展开的?无论如何,我最终设置了一个范围,其内容将被清除,现在就足够了。非常感谢您的参与!