Как уже упоминалось студент Гэри, вы должны удалить точку перед 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 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
Я надеюсь, что это дает вам ощущение того, почему студент Гари считал, что компилятор может быть ожидая With
(хотя это было неуместно) и, как и когда With
может быть полезным в вашем коде.
Я попытался удалить. перед каждой ячейкой для получения этого 'Worksheets (имя листа) .Range (ячейки (2, LastColData), ячейки (LastRowData, LastColData)). ClearContents' И я получаю сообщение об ошибке« Ошибка определения приложения или ошибка, определяемая объектом ». При использовании ** WITH **, где это должно произойти? – dojogeorge