ActiveSheet.Range("$A$1:$O$1583")
- это диапазон, который будет фильтроваться. A1
- верхняя левая ячейка, а O1583
- нижняя правая. Эта ячейка находится в столбце O
, строка 1583.
Знаки $
могут быть удалены, в VBA они не важны. В Excel $
знак означает, что строка или столбец, следующий за знаком доллара, привязаны или являются абсолютными. При копировании формул Excel они будут копировать ячейки, указанные в этой формуле, относительно позиции, в которую они копируются.
Попробуйте следующие строки, чтобы увидеть выбранный диапазон:
Sub TestMe
ActiveSheet.Range("$A$1:$O$1583").Select
End Sub
Диапазон важен, потому что он показывает отфильтрованный диапазон. Представьте себе эти данные:
![enter image description here](https://i.stack.imgur.com/6gVvj.png)
Как только вы запустите этот Range("A1:G10").AutoFilter
, вы увидите, что в фильтре находятся только значения от 1 до 6, а MORE
там нет. Однако, если вы записываете значения во всех ячейках от конца фильтра до MORE
(строки 11, 12, 13, 14), они будут присутствовать, поскольку Excel будет считать, что значения были увеличены.
Также по столбцам вы не можете отфильтровать поле за пределами вашего диапазона. Range("$A$2:$B$1583").AutoFilter Field:=3
не будет работать, так как вы будете искать фильтр по столбцу 3 из диапазона 2 столбцов.