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

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

Определение активных составляющих книги

Мне кажется, многие загонялись таким вопросом, как определить активную ячейку (на которой находится курсор), строку или столбец. Или же хотелось получить адрес в формате А1, В4 и т.д. Вот сегодня я и покажу, как это сделать, потому, что очень удобно, когда ты знаешь активные элементы книги.

Номер активной строки

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

       Sub Stroka()

           s = ActiveCell.Row

           MsgBox "Активная строка под номером " & s, vbInformation, "Активная строка"

       End Sub

Номер активного столбца и стороки

Аналогично определению строки столбец определяется по такому же принципу, только в конце добавляется не строка, а столбец:

       Sub Stroka()

           s = ActiveCell.Row

           b = ActiveCell.Column

           MsgBox "Активная строка под номером " & s & " " & _

vbNewLine & "Активный столбец под номером " & b, vbInformation, "адрес"

       End Sub

Определяем номер последней заполненной строки и столбца

Sub Last_Stroka_and_Stolbec()

'ищем последнюю заполненную строку и столбец и выводим сообщение о номере

    Stroka = ActiveSheet.Cells.Find(What:="*", SearchDirection:=xlPrevious, _

          SearchOrder:=xlByRows).Row

    Stolbec = ActiveSheet.Cells.Find(What:="*", SearchDirection:=xlPrevious,         _SearchOrder:=xlByRows).Column

MsgBox "Последняя строка под номером " & Stroka & " " & _

           vbNewLine & "Последний столбец под номером " _

           & Stolbec, vbInformation, "Адрес"

End Sub

Определяем активную ячейку

Исходя из выше записанных выражений теперь можно смело определить координаты активной ячейки. То-есть определяем активную строку, активный столбец и получаем координаты активной ячейки. Выглядеть это будет так:

      Sub yacheika()

          sk = ActiveCell.Row

          st = ActiveCell.Column

         

          MsgBox "Активная ячейка имеет координаты Cells(" & sk & "," & st & ")", _

                  vbInformation, "Активная ячейка"

      End Sub

Адрес активной ячейки

Многие думали, а как получить адрес активной ячейки? Очень просто, делается это так:

      Sub adres()

          A = ActiveCell.Address

          MsgBox "Абсолютный адрес активной ячейки - " & A, vbInformation, "Адрес"

      End Sub

Но такая запись может не устроить некоторых, потому что вней присутствуют $, т.е. абсолютное значение, а не относительное. Но и это можно поправить. Доллары уберутся, если записать код так:

      Sub adress()

          A = ActiveCell.Address(0, 0)

          MsgBox "Относительный адрес активной ячейки - " & A, vbInformation, "Адрес"

      End Sub

В скобках оператора Address указано какое именно значение должно быть относительным, а какое абсолютным. Если Address(0,0), то и строка и столбец записаны относительными (первый ноль отвечает за строку, второй ноль - это столбец). Если в строке поставить вместо ноля еденицу, то строка будет абсолютным значением, а столбец относительным. Причём значения следующих записей равнозначны:

Address(1, 0) = Address(True, False)

Адрес выделенного диапазона ячеек

Адрес выделенного диапазона можно получить следующим образом

      Sub diapazon()

'используйте любую переменную для определения адреса

          A = Selection.Rows.Address(0, 0)    'Через строку

          b = Selection.Columns.Address(0, 0) 'Через столбец

          c = Selection.Address(0, 0)

          MsgBox "Выделенный диапазон - " & A, vbInformation, "Адрес"

      End Sub

 

Координаты выделенного диапазона

Не знаю почему, но у многих возникает какая-то сложность определения координат выделенного диапазона, хотя существует очень много способов. Я приведу пример одного, но который будет понятен сейчас.

      Sub Kdiapazon()

          a = Selection.Row

          b = Selection.Column

          K1 = Cells(a, b).Address(0, 0)

         

          aa = a + Selection.Rows.Count - 1

          bb = b + Selection.Columns.Count - 1

          K2 = Cells(aa, bb).Address(0, 0)

         

          MsgBox "Первая координата выделенного диапазона - " & K1 & vbNewLine & _

          "Вторая координата выделенного диапазона - " & K2, vbInformation, "Координаты"

      End Sub

a - Определяет номер первой строки выделенного диапазона;
b - Определяет номер первого столбца выделенного диапазона;
K1 - Определяем первую координату выделенного диапазона;
aa - Определяем номер последней строки выделенного диапазона;
bb - Определяем номер пследнего столбца выделенного диапазона;
K2 - Определяем вторую координату выделенного диапазона;

Selection.Rows.Count - определяет количество строк в выделенном диапазоне;
Selection.Columns.Count - определяет количество столбцов в выделенном диапазоне;

У многих возник вопрос: А почему вычитаем единицу? Всё потому, что первая координата входит в выделенный диапазон и нам её надо не потерять.

Имя активной книги

Имя активной книги возможно вычислить такой записью:

      Sub WorkbookName()

          Name = ActiveWorkbook.Name

          MsgBox "Имя активной книги - " & Name, vbInformation, "Имя активной книги"

      End Sub

Имя активного листа

Имя активного листа можно определить так:

      Sub SheetsName()

          Name = ActiveSheet.Name

          MsgBox "Имя активного листа - " & Name, vbInformation, "Имя активного листа"

      End Sub

< < Предыдущая глава Следующая глава > >
Поиск

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