单击按钮时Excel VBA ClearContent在两个范围和单个单元格中
我试图在工作簿中创建一个宏,单击按钮即可清除范围和单个单元格中的内容;我已经编写了下面的代码,适用于所有范围,但对于单个单元格会出现错误。你知道我应该用什么词来代替“范围”来清除单个单元格中的内容吗单击按钮时Excel VBA ClearContent在两个范围和单个单元格中,excel,vba,Excel,Vba,我试图在工作簿中创建一个宏,单击按钮即可清除范围和单个单元格中的内容;我已经编写了下面的代码,适用于所有范围,但对于单个单元格会出现错误。你知道我应该用什么词来代替“范围”来清除单个单元格中的内容吗 Sub Clearcells() 'Updateby Extendoffice 20161008 Range("C1:C2").ClearContents Range("I11:I24").ClearContents Range("I26:I31&q
Sub Clearcells()
'Updateby Extendoffice 20161008
Range("C1:C2").ClearContents
Range("I11:I24").ClearContents
Range("I26:I31").ClearContents
Range("I33:I38").ClearContents
Range("I40:I44").ClearContents
Range("I46:I49").ClearContents
Range("I51:I54").ClearContents
Range("156:I58").ClearContents
Range("I60:I62").ClearContents
Range("I64:I66").ClearContents
Range("I68:I69").ClearContents
Range("I71:I72").ClearContents
Range("I74:I75").ClearContents
Range("I77:I78").ClearContents
Range("I80:I81").ClearContents
Range("I83:I84").ClearContents
Range("I86:I87").ClearContents
Range("I89:I90").ClearContents
Range("I92:I93").ClearContents
Range("I95:I96").ClearContents
Range("I98:I99").ClearContents
Range("I101:I102").ClearContents
Range("I104:I105").ClearContents
Range("I107:I108").ClearContents
Range("I110").ClearContents
Range("I112").ClearContents
Range("I114").ClearContents
Range("I116").ClearContents
Range("I118").ClearContents
Range("I120").ClearContents
Range("I122").ClearContents
Range("I124").ClearContents
Range("I126").ClearContents
Range("I128").ClearContents
Range("I130").ClearContents
Range("I132").ClearContents
Range("I134").ClearContents
Range("I136").ClearContents
Range("I138").ClearContents
Range("I140").ClearContents
Range("I142").ClearContents
Range("I144").ClearContents
End Sub
处理单个或多个单元格范围的语法没有区别。我认为BigBen已经很成功了。尽管如此,我还是建议使用下面给出的代码
Sub ClearCells()
Dim Def As String ' range Definition
Dim Sp() As String
Dim i As Integer
Def = "C1:C2,I11:I24,I26:I31,I33:I38,I40:I44,I46:I49,I51:I54,I56:I58,I60:I62," & _
"I64:I66,I68:I69,I71:I72,I74:I75,I77:I78,I80:I81,I83:I84,I86:I87,I89:I90," & _
"I92:I93,I95:I96,I98:I99,I101:I102,I104:I105,I107:I108,I110,I112,I114,I116," & _
"I118,I120,I122,I124,I126,I128,I130,I132,I134,I136,I138,I140,I142,I144"
Sp = Split(Def, ",")
For i = 0 To UBound(Sp)
' Debug.Print Range(Sp(i)).Address
Range(Sp(i)).ClearContents
Next i
End Sub
Debug.Print Range(Sp(i)).Address
旨在帮助您查找BigBen指出的打字错误,因为当遇到无效地址时,代码将失败
更简单的代码,如Range(“C1:C2,I11:I24,I26:I31,I33:I38,I40:I44,I46:I49”)。ClearContents
也可以工作,但列表太长。Excel拒绝了这一点,我认为,如果您试图通过加入它们来创建一个“联合”范围,情况也会如此。上述建议即使扩大,也是可靠和稳定的
说到扩展,在代码运行时禁用屏幕更新可以加快代码的速度。在循环前面加上
Application.ScreenUpdate=False
,然后在循环后面重复同一行,加上True
。打字:范围(“156:I58”)。ClearContent
-应该是字母I
,而不是数字1
。除此之外,这对我来说非常好。错误信息是什么?在哪一行?总是清除相同的范围/单元格吗?如果是这样的话,我会尝试创建一个命名范围,并在一行代码中清除它。创建一个命名范围,然后您只需使用一行代码range(“MyNamedRange”).Clearcontents
即可将其清除。