Дополнительно
Очистка содержимого ячеек в VBA с помощью ссылки на столбец
Я пытаюсь заставить часть кода очистить данные в некоторых ячейках, используя ссылки на столбцы. Я использую следующий код:
Worksheets(sheetname).Range(.Cells(2, LastColData), .Cells(LastRowData, LastColData)).ClearContents
Однако я получаю ошибку в первой секции .Cells, почему это происходит?
12
3
Вы можете получить доступ ко всему столбцу как к диапазону, используя объект
Worksheet.Columns
.Например:
должно очистить содержимое колонки A
Существует также объект
Worksheet.Rows
, если вам нужно сделать что-то подобное для строкОшибка, которую вы получаете, скорее всего, связана с отсутствием блока with.
О блоках with можно прочитать здесь: Microsoft Help.
Как отметил Gary's Student, вам нужно убрать точку перед
Cells
, чтобы код работал так, как вы его изначально написали. Я не могу быть уверен, поскольку вы включили только одну строку кода, но ошибка, которую вы получили при удалении точек, может быть связана с тем, как вы определили свои переменные.Я запустил вашу строку кода с переменными, определенными как целые числа, и она сработала:
Я не думаю, что оператор
With
уместен в той строке кода, которой вы поделились, но если бы вы использовали его, тоWith
должен быть в начале строки, определяющей объект, которым вы манипулируете. Вот ваш код, переписанный с использованием ненужного оператораWith
:Операторы
With
предназначены для того, чтобы избавить вас от необходимости перепечатывать код и сделать вашу кодировку более удобной для чтения. Они становятся полезными и уместными, если вы делаете с объектом более одной вещи. Например, если вы хотите также сделать столбец красным и добавить толстую черную рамку, вы можете использовать операторWith
следующим образом:В противном случае вам пришлось бы объявлять диапазон для каждого действия или свойства, например, так:
Я надеюсь, это даст вам представление о том, почему Gary's Student считал, что компилятор может ожидать
With
(даже если это было неуместно), и как и когдаWith
может быть полезен в вашем коде.Перед этим вам нужен оператор With. Или превратите .Cells в Cells.