Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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 VBA ClearContent在两个范围和单个单元格中_Excel_Vba - Fatal编程技术网

单击按钮时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
即可将其清除。