Excel 2016 VBA宏清除单元格范围,然后将数据插入空白单元格

时间:2019-03-07 17:23:31

标签: excel vba

宏的目的是重置工作表。

我的宏首先在几个不同的单元格范围内进行clearcontents分配。

接下来,我想用0填充其中一些单元格

我发现了一条建议,将其=“ ON”更改为=“ 0”

  

Intersect(Selection,Range(“ D7:R23”))=“ 0”

我得到以下内容,

  

运行时错误“ 91”

     

对象变量或未设置块变量

知道我在做什么错吗?

代码如下:

Sub Clearcells()

Range("D2:Z2").ClearContents

Range("D3:AG3").ClearContents

Range("D4:AG4").ClearContents

Range("AE2:AG2").ClearContents

Range("C7:R23").ClearContents

Range("W7:Y23").ClearContents

Range("AC7:AF23").ClearContents

Range("B27:AG43").ClearContents

Intersect(Selection, Range("D7:R23")) = "0"

Intersect(Selection, Range("W7:Y23")) = "0"

Intersect(Selection, Range("AC7:AF23")) = "0"

End Sub

3 个答案:

答案 0 :(得分:1)

此错误表示没有Select的单元格落在 D7:R23 范围内。这两个范围是完全不相交的。例如:

enter image description here

在上面的示例中,在运行代码行之前,我Select对了块 A1:B5

答案 1 :(得分:1)

尝试一下;您尝试做一个简单的清除,然后将它们写入空单元格;您不需要使用Intersect,并且可以组合所有范围来缩短代码。

Range("D2:Z2, D3:AG3, D4:AG4, AE2:AG2, C7:R23, W7:Y23, AC7:AF23, B27:AG43").ClearContents
Range("D7:R23, W7:Y23, AC7:AF23") = "0"

答案 2 :(得分:0)

我不知道如何清除然后插入,因此这段代码只是用0值替换了所有单元格。最终,这就是我想要做的。

Sub Clearcells()    
Range("D2:Z2").ClearContents    
Range("D3:AG3").ClearContents    
Range("D4:AG4").ClearContents    
Range("AE2:AG2").ClearContents    
Range("B27:AG43").ClearContents    
Range("C7:C23").ClearContents    
Range("D7:R23") = "0"    
Range("W7:Y23") = "0"    
Range("AC7:AF23") = "0"    
End Sub
相关问题