在VBA Excel上的“ClearContents”有两种方法,但是1正常工作。 为什么?
晚上好朋友:
我记住了清除VBA项目的单元格的定义范围内的两种方法(在MS Excel中):
Worksheets("SheetName").Range("A1:B10").ClearContents
-
Worksheets("SheetName").Range(Cells(1, 1), Cells(10, 2)).ClearContents
问题是,第二种方式显示错误“ 1004 ”,当我不看当前工作表“SheetName”(换句话说,当我没有“SheetName”作为ActiveSheet)。
在任何情况下,第一种方式完美无瑕。
为什么会发生? 如何在没有这个bug的情况下使用“第二种方式”?
这是因为您没有使用工作表对象限定Cells(1, 1)
也是如此。 为了使代码工作,它应该看起来像这样:
Dim ws As Worksheet Set ws = Sheets("SheetName") Range(ws.Cells(1, 1), ws.Cells(10, 2)).ClearContents
交替:
With Sheets("SheetName") Range(.Cells(1, 1), .Cells(10, 2)).ClearContents End With
编辑 :当从标准模块或用户窗体运行代码时,Range对象将从Cells对象inheritance工作表。 如果您正在从工作表代码模块运行代码,则还需要限定Range
,如下所示:
ws.Range(ws.Cells(1, 1), ws.Cells(10, 2)).ClearContents
要么
With Sheets("SheetName") .Range(.Cells(1, 1), .Cells(10, 2)).ClearContents End With
那是因为你没有完全限定你的单元格对象。 尝试这个
With Worksheets("SheetName") .Range(.Cells(1, 1), .Cells(10, 2)).ClearContents End With
注意细胞之前的DOT?