Мне кажется, многие загонялись таким вопросом, как определить активную ячейку (на которой находится курсор), строку или столбец. Или же хотелось получить адрес в формате А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
< < Предыдущая глава | Следующая глава > > |