Пятница, 09.20.2024, 4:06 AM
Приветствую Вас Гость | RSS

Электронный учебник по VBA MS Excel 2010

Скрытые перемещения

Я решил выделить отдельный урок, в котором будут описаны относительные команды скрытых перемещений по книге. Например, каким образом, возможно, выполнить перемещение курсора на 3 столбца влево и на 6 строк вниз относительно активной ячейки. Это бывает очень удобно, когда вы работаете с одними и теми же данными, с одинаковыми таблицами, из которых Вам надо выделить только определённые значения, скопировать их или наоборот оставить только их, а всё остальное удалить. При этом у Вас всё время выполняется одна и таже операция, которая уже надоела. Почему бы не написать готовый макрос, который будет работать, и опираться на определённую ячейку таблицы - активную ячейку. Именно это я и решил собрать всё в одном уроке - Скрытые перемещения.

Относительные перемещения

Рассмотрим команду относительного перемещения, которая называется:

Offset(RowOffset, ColumnOffset)

RowOffset - это на сколько строк вверх или вниз необходимо сделать перемещение. Может принимать как положительные значения (при перемещении вниз), так и отрицательные значения (при перемещении вверх);
ColumnOffset - это на сколько столбцов влево или вправо необходимо сделать перемещение. Может принимать как положительные значения (при перемещении вправо), так и отрицательные значения (при перемещении влево);

      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 - это лист;
(X) - это номер листа;

Ниже на примере показано как можно выделить лист №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 - это выделение крайней правой яейки;
2 - это выделение самой верхней ячейки;
3 - это выделение крайней левой ячейки;
4 - это выделение нижней заполненной ячейки;

При помощи этих команд можно не только выделять ячейки, но и сразу заносить в них данные без предварительного перемещения в них курсора, например:

      Sub Primer()
          Selection.End(xlToRight) = "Пример"
      End Sub
< < Предыдущая глава Следующая глава > >
Поиск

Динара Илькаева © 2024
Бесплатный конструктор сайтов - uCoz