Рубрикатор
|
Скрытые перемещенияЯ решил выделить отдельный урок, в котором будут описаны относительные команды скрытых перемещений по книге. Например, каким образом, возможно, выполнить перемещение курсора на 3 столбца влево и на 6 строк вниз относительно активной ячейки. Это бывает очень удобно, когда вы работаете с одними и теми же данными, с одинаковыми таблицами, из которых Вам надо выделить только определённые значения, скопировать их или наоборот оставить только их, а всё остальное удалить. При этом у Вас всё время выполняется одна и таже операция, которая уже надоела. Почему бы не написать готовый макрос, который будет работать, и опираться на определённую ячейку таблицы - активную ячейку. Именно это я и решил собрать всё в одном уроке - Скрытые перемещения. Относительные перемещенияРассмотрим команду относительного перемещения, которая называется: Offset(RowOffset, ColumnOffset) RowOffset - это на сколько строк вверх или вниз необходимо сделать перемещение. Может принимать как положительные значения (при перемещении вниз), так и отрицательные значения (при перемещении вверх); Sub Primer() ActiveCell.Offset(0, 2).Select '1 ActiveCell.Offset(4, 0).Select '2 ActiveCell.Offset(-2, 0).Select '3 ActiveCell.Offset(0, -2).Select '4 End Sub В первом случае курсор выделит ячеку находящуюся на 2 ячейки вправо от активной ячейки. Во втором случае выделится ячейка, находящаяся на 4 строки вниз от предыдущей - активной ячейки. В третьем случае выделится ячейка, находящаяся на две строки выше от предыдущей - активной ячейки. И в последнем случае выделится ячейка, находящаяся на два столбца влево от предыдущей - активной ячейки. В следующем примере показано как выделить столбец, находящийся на два столбца правее от 4 столбца ("D"). Вместо цифры 4 можно использовать какую-то переменную, относительно которой уже будет происходить выполнение Вашего макроса. Sub Primer() Columns(4).Offset(0, 2).Select End Sub Перемещаемся по листам не зная их имёнИногда возникает необходимость выполнить перемещение по листам, но при этом их имена постоянно меняются или Вы делаете такую программу, в которой Вы заранее не знаете имена листов, но перемещаться в ней по этим листам как-то надо. Для этого можно воспользоваться записью относительной: Sheets(X) Sheets - это лист; Ниже на примере показано как можно выделить лист №2, и не важно какое у него имя, второй по счёту лист будет выделен: Sub Primer() Sheets(2).Select End Sub Лист можно не только выделить, но и перименовать и дальше испоьлзовать в программе ваше имя. Sub Primer() Sheets(2).Name = "Пример" End Sub Крайние перемещенияВозможно, кто-то уже задавался вопросом: "Как определить край таблицы или последний заполненный столбец, строку?" Вот тут я и покажу как определить последнюю заполненную ячейку. Зная эту ячейку можно определить конечную координату таблицы, которую в последствии можно успешно обработать. Ниже показан пример выделения конечных ячеек относительно текущей. Sub Primer() Selection.End(xlToRight).Select '1 Selection.End(xlUp).Select '2 Selection.End(xlToLeft).Select '3 Selection.End(xlDown).Select '4 End Sub 1 - это выделение крайней правой яейки; При помощи этих команд можно не только выделять ячейки, но и сразу заносить в них данные без предварительного перемещения в них курсора, например: Sub Primer() Selection.End(xlToRight) = "Пример" End Sub
|
Поиск
|
||