Рубрикатор
|
Определение активных составляющих книгиМне кажется, многие загонялись таким вопросом, как определить активную ячейку (на которой находится курсор), строку или столбец. Или же хотелось получить адрес в формате А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 - Определяет номер первой строки выделенного диапазона; Selection.Rows.Count - определяет количество строк в выделенном диапазоне; У многих возник вопрос: А почему вычитаем единицу? Всё потому, что первая координата входит в выделенный диапазон и нам её надо не потерять. Имя активной книгиИмя активной книги возможно вычислить такой записью: Sub WorkbookName() Name = ActiveWorkbook.Name MsgBox "Имя активной книги - " & Name, vbInformation, "Имя активной книги" End Sub Имя активного листаИмя активного листа можно определить так: Sub SheetsName() Name = ActiveSheet.Name MsgBox "Имя активного листа - " & Name, vbInformation, "Имя активного листа" End Sub
|
Поиск
|
||