我正在尝试使用列引用来清除一些单元格中的数据,使用以下代码:
Worksheets(sheetname).Range(.Cells(2, LastColData), .Cells(LastRowData, LastColData)).ClearContents
然而,在第一个 ".Cells" 部分,我遇到了一个错误,为什么会这样?
您可以使用Worksheet.Columns
对象访问整个列作为范围。
例如:
Worksheets(sheetname).Columns(1).ClearContents
应该清除 A 列的内容
如果您需要对行执行类似操作,还有 Worksheet.Rows
对象。
您收到的错误可能是由于缺少 with 块造成的。
您可以在这里阅读有关 with 块的信息:Microsoft 帮助文档
对于像我一样遇到这种问题需要解决方案但又不想清除头信息的人,下面就是适用于我的一行代码:
ActiveSheet.Range("A3:A" & Range("A3").End(xlDown).Row).ClearContents
从第三行开始 - 根据您的需求进行更改。
Cells
前面的点以使其正常工作。我不能确定,因为您只包含了一行代码,但是当您删除点时收到的错误可能与您如何定义变量有关。Sub TestClearLastColumn()
Dim LastColData As Long
Set LastColData = Range("A1").End(xlToRight).Column
Dim LastRowData As Long
Set LastRowData = Range("A1").End(xlDown).Row
Worksheets("Sheet1").Range(Cells(2, LastColData), Cells(LastRowData, LastColData)).ClearContents
End Sub
With
语句并不合适,但如果你要使用它,With
应该在定义你正在操作的对象的行的开头。以下是使用不必要的With
语句重写的代码:With Worksheets("Sheet1").Range(Cells(2, LastColData), Cells(LastRowData, LastColData))
.ClearContents
End With
With
语句旨在帮助您避免重复输入代码,并使您的编码更易于阅读。如果您需要对一个对象进行多个操作,那么使用With
语句将非常有用和合适。例如,如果您想要将列变为红色并添加粗黑边框,您可以使用以下With
语句:
With Worksheets("Sheet1").Range(Cells(2, LastColData), Cells(LastRowData, LastColData))
.ClearContents
.Interior.Color = vbRed
.BorderAround Color:=vbBlack, Weight:=xlThick
End With
Worksheets("Sheet1").Range(Cells(2, LastColData), Cells(LastRowData, LastColData)).ClearContents
Worksheets("Sheet1").Range(Cells(2, LastColData), Cells(LastRowData, LastColData)).Interior.Color = vbRed
Worksheets("Sheet1").Range(Cells(2, LastColData), Cells(LastRowData, LastColData)).BorderAround Color:=vbBlack, Weight:=xlThick
我希望这能让你理解为什么Gary的学生认为编译器可能期望使用With
(尽管不合适),以及何时何地在你的代码中使用With
可能会有用。
我发现这是在所需的行和列之间清理形状的简单方法。我不确定这是否是您要寻找的内容。希望能有所帮助。
Sub sbClearCellsOnlyData()
Range("A1:C10").ClearContents
End Sub
Sub ClearThisSheet()
ActiveSheet.UsedRange.ClearContents
End Sub
CRow = 1
LastRow = Cells(Rows.Count, 3).End(xlUp).Row
Do Until CRow = LastRow + 1
Cells(CRow, 1).Value = Empty
Cells(CRow, 2).Value = Empty
Cells(CRow, 3).Value = Empty
Cells(CRow, 4).Value = Empty
CRow = CRow + 1
Loop
LastColData = Sheets(WSNAME).Range("A4").End(xlToRight).Column
LastRowData = Sheets(WSNAME).Range("A4").End(xlDown).Row
Rng = "A4:" & Sheets(WSNAME).Cells(LastRowData, LastColData).Address(RowAbsolute:=False, ColumnAbsolute:=False)
Worksheets(WSNAME).Range(Rng).ClearContents
在此之前需要一个With语句。或将.Cells更改为Cells
Worksheets(sheetname).Range(Cells(2, LastColData), Cells(LastRowData, LastColData)).ClearContents
但是出现了“应用程序定义错误或对象定义错误”的错误。使用 WITH 语句时应该放在哪里? - dojogeorge