Как определить адрес активной ячейки.
Q: Как в макросе узнать и использовать текущее положение курсора (не мышиного, естественно)?
A:Очень просто! ActiveCell.Row и ActiveCell.Column — покажут координаты активной ячейки.
[ Назад ]
[ Оглавление ]
[ Далее ]
Оставить комментарий
Комментарий:
можно использовать BB-коды Максимальная длина комментария — 4000 символов. |
|
|
Комментарии
1.
17 апреля 2013, 22:49:22
Спасибо, освежило память))
2.
64K
28 сентября 2010 года
Vladlen70
0 / / 28.09.2010
28 сентября 2010, 16:25:13
А не проще ли использовать — ActiveCell.Address или Activecell.AddressLocal?
Используя Microsoft Excel, вы можете легко получить местоположение выбранной в данный момент ячейки в поле имени, которое отображается слева от панели формул. Но если ячейка названа, вы не можете проверить ее местоположение на основе отображения в поле имени. И если вы хотите напрямую показать полный адрес активной ячейки или отобразить адрес активной ячейки в указанной ячейке, что бы вы сделали? В этом руководстве мы покажем вам, как легко получить адрес активной ячейки с помощью формул и методов VBA.
Получить адрес активной ячейки с формулой
Получить адрес активной ячейки с кодом VBA
Отображение адреса активной ячейки в указанной ячейке с кодом VBA
Динамически отображать адрес активной ячейки с помощью удивительного инструмента
Получить адрес активной ячейки с формулой
В этом разделе мы предоставим вам формулу легкого получения адреса активной ячейки.
1. Выберите ячейку, чтобы сделать ее активной.
2. Введите в нее приведенную ниже формулу и нажмите Enter .
=ADDRESS(ROW(),COLUMN())
Затем вы можете увидеть, что адрес текущей выбранной ячейки сразу отображается в ячейке.
Внимание: Если вы выберете другую ячейку, адрес не изменится автоматически. Чтобы получить динамический адрес при выборе разных ячеек, примените следующие методы.
Получить адрес активной ячейки с кодом VBA
Вы также можете получить адрес активной ячейки с кодом VBA. Пожалуйста, сделайте следующее.
1. нажмите другой + F11 одновременно открыть Microsoft Visual Basic для приложений окно.
2. в Microsoft Visual Basic для приложений дважды щелкните имя текущего рабочего листа на левой панели, чтобы открыть редактор кода, затем скопируйте и вставьте приведенный ниже код VBA в редактор кода.
Код VBA: получить адрес активной ячейки
Sub selectRange()
MsgBox ActiveCell.Address
End Sub
3. Затем нажмите Run кнопку для запуска кода.
4. Затем появится диалоговое окно с адресом активной ячейки, указанным внутри.
Отображение адреса активной ячейки в указанной ячейке с кодом VBA
В другой ситуации вы хотите, чтобы адрес активной ячейки отображался в указанной ячейке. Каждый раз, когда вы переходите из одной ячейки в другую, адрес ячейки будет автоматически изменяться и отображаться в указанной ячейке. Пожалуйста, сделайте следующее.
1. Откройте Microsoft Visual Basic для приложений окно, нажав другой + F11 одновременно.
2. Дважды щелкните имя листа на левой панели, чтобы открыть редактор кода, затем скопируйте и вставьте в него приведенный ниже код.
Код VBA: отображать адрес активной ячейки в указанной ячейке
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range("A1").Value = ActiveCell.Address
End Sub
Внимание: A1 — это ячейка, в которую вы хотите поместить адрес активной ячейки, вы можете изменить его на указанную ячейку для своих нужд.
3. Затем нажмите Файл > Закройте и вернитесь в Microsoft Excel Для выхода из Microsoft Visual Basic для приложений окно.
Вы можете видеть, что адрес активной ячейки отображается в ячейке A1, и адрес будет изменяться автоматически в зависимости от изменения активной ячейки. Смотрите скриншот:
Динамически отображать адрес активной ячейки с помощью удивительного инструмента
Если вы хотите динамически отображать адрес активной ячейки на листе, я настоятельно рекомендую Расширенная панель редактирования инструмент Kutools for Excel. Давайте посмотрим, как этот инструмент может динамически отображать адрес активной ячейки на листе.
1. Нажмите Кутулс > Показать спрятать > Расширенная панель редактирования для включения функции.
С этого момента каждый раз, когда вы щелкаете ячейку, появляется окно расширенной панели редактирования. И адрес активной ячейки будет отображаться в нижней части окна.
Tips: Вы можете просматривать и редактировать содержимое ячейки прямо в окне.
Если вы хотите получить бесплатную пробную версию (30-день) этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Определение активных составляющих книги
Мне кажется, многие загонялись таким вопросом, как определить активную ячейку (на которой находится курсор), строку или столбец. Или же хотелось получить адрес в формате А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
Активная ячейка в Excel VBA
Активная ячейка — это текущая выбранная ячейка на листе, активная ячейка в VBA может использоваться как ссылка для перехода к другой ячейке или изменения свойств той же активной ячейки или ссылки на ячейки, предоставленной из активной ячейки, активная ячейка в VBA может можно получить с помощью метода application.property с ключевым словом active cell.
Для эффективной работы с кодированием VBA важно понимать концепцию объекта диапазона и свойств ячеек в VBA. В этих концепциях есть еще одна концепция, которую вам нужно изучить, это «активная ячейка VBA».
В Excel есть миллионы ячеек, и вы наверняка сомневаетесь, какая из них является активной. Для примера посмотрите на изображение ниже.
На самом изображении выше у нас есть много ячеек, чтобы определить, какая из них является активной ячейкой, очень просто, какая бы ячейка не была выбрана прямо сейчас, она называется «Активная ячейка» в VBA.
Если ваша активная ячейка не видна в вашем окне, посмотрите на поле имени, оно покажет вам адрес активной ячейки, на приведенном выше изображении адрес активной ячейки — B3.
Даже когда в качестве диапазона ячеек выбрано множество ячеек, любая первая ячейка в выделении становится активной ячейкой. Например, посмотрите на изображение ниже.
# 1 — Ссылки в Excel VBA
В наших предыдущих статьях мы видели, как ссылаться на ячейки в VBA. По свойству Active Cell мы можем ссылаться на ячейку.
Например, если мы хотим выбрать ячейку A1 и вставить значение «Hello», мы можем записать его двумя способами. Ниже приведен способ выбора ячейки и вставки значения с помощью объекта VBA «RANGE».
Код:
Sub ActiveCell_Example1 () Диапазон ("A1"). Выберите диапазон ("A1"). Value = "Hello" End Sub
Сначала будет выбрана ячейка A1 « Диапазон (« A1 »). Выбрать»
Затем он вставит значение «Hello» в диапазон ячейки A1 («A1»). Value = «Hello»
Теперь я удалю строку Range («A1»). Value = «Hello» и использую свойство Active Cell для вставки значения.
Код:
Sub ActiveCell_Example1 () Диапазон ("A1"). Выберите ActiveCell.Value = "Hello" End Sub
Точно так же сначала он выберет ячейку A1 « Диапазон (« A1 »). Выбрать»
Но здесь я использовал ActiveCell.Value = «Hello» вместо Range («A1»). Value = «Hello»
Причина, по которой я использовал свойство Active Cell, потому что в тот момент, когда я выбираю ячейку A1, она становится активной ячейкой. Таким образом, мы можем использовать свойство Excel VBA Active Cell для вставки значения.
# 2 — Активный адрес ячейки, значение, строка и номер столбца
Чтобы понять это еще лучше, давайте покажем адрес активной ячейки в окне сообщения. Теперь посмотрите на изображение ниже.
На изображении выше активной ячейкой является «B3», а значение — 55. Давайте напишем код на VBA, чтобы получить адрес активной ячейки.
Код:
Sub ActiveCell_Example2 () MsgBox ActiveCell.Address End Sub
Запустите этот код с помощью клавиши F5 или вручную, тогда он покажет адрес активной ячейки в окне сообщения.
Выход:
Точно так же код ниже покажет значение активной ячейки.
Код:
Sub ActiveCell_Example2 () MsgBox ActiveCell.Value End Sub
Выход:
Код ниже покажет номер строки активной ячейки.
Код:
Sub ActiveCell_Example2 () MsgBox ActiveCell.Row End Sub
Выход:
Код ниже покажет номер столбца активной ячейки.
Код:
Подложка ActiveCell_Example2 () MsgBox ActiveCell.Column End Sub
Выход:
# 3 — Параметры активной ячейки в Excel VBA
Свойство Active Cell также имеет параметры. После ввода свойства ActiveCell откройте скобку, чтобы увидеть параметры.
Используя этот параметр, мы также можем ссылаться на другую ячейку.
Например, ActiveCell (1,1) означает, какая ячейка активна. Если вы хотите переместиться на одну строку ниже, вы можете использовать ActiveCell (2,1), здесь 2 не означает, что нужно переместиться на две строки вниз, а не только на одну строку вниз. Аналогично, если вы хотите переместить один столбец вправо, тогда это код ActiveCell (2,2)
Для примера посмотрите на изображение ниже.
На изображении выше активной ячейкой является A2, чтобы вставить значение в активную ячейку, вы пишете этот код.
Код:
ActiveCell.Value = «Hiiii» или ActiveCell (1,1) .Value = «Hiiii»
Запустите этот код вручную или с помощью клавиши F5, это вставит значение «Hiiii» в ячейку.
Теперь, если вы хотите вставить то же значение в ячейку ниже, вы можете использовать этот код.
Код:
ActiveCell (2,1) .Value = «Hiiii»
Это вставит значение в ячейку под активной ячейкой.
Если вы хотите вставить значение в один столбец справа, вы можете использовать этот код.
Код:
ActiveCell (1,2) .Value = «Hiiii»
Это вставит «Hiiii» в следующую ячейку столбца активной ячейки.
Таким образом, мы можем ссылаться на ячейки в VBA, используя свойство Active Cell.
Надеюсь, вам понравилось. Спасибо, что уделили нам время.
Вы можете скачать шаблон VBA Active Cell Excel здесь: — VBA Active Cell Template
Добрый день. Может кто нибудь подсказать возможно ли узнать адрес активной ячейки при помощи формулы без VBA , и если это возможно то как? |
|
webley Пользователь Сообщений: 1991 |
=АДРЕС(СТРОКА();СТОЛБЕЦ()) |
{quote}{login=}{date=02.11.2010 02:03}{thema=}{post}______________{/post}{/quote} спасибо , а не могли бы в кратце объяснить как это работает , для именного диапазона «aaa» я нашёл формулу , но что то не понятно как это работает. |
|
{quote}{login=webley}{date=02.11.2010 01:57}{thema=}{post}=АДРЕС(СТРОКА();СТОЛБЕЦ()){/post}{/quote} АДРЕС(СТРОКА();СТОЛБЕЦ()) — это конечно хорошо , но как мне допустим сделать так чтобы в ячейке А1 отображался адрес активной ячейки |
|
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
{quote}{login=}{date=02.11.2010 02:58}{thema=Re: }{post}{quote}{login=webley}{date=02.11.2010 01:57}{thema=}{post}{/post}{/quote} как мне допустим сделать так чтобы в ячейке А1 отображался адрес активной ячейки{/post}{/quote} |
{quote}{login=}{date=02.11.2010 03:06}{thema=}{post}=ЯЧЕЙКА(«адрес»){/post}{/quote} извинте меня , может я неправильно выражаюсь , но мне нужна формула что бы в ячеке А1 отображался адрес активной ячейки. Например если я выбрал С1 , то в А1 отображается С1 , если выбрал Е3 то в А1 отображается Е3 , и т.д. |
|
dude Пользователь Сообщений: 1066 |
вам ее дали |
Возникла аналогичная проблема, нашел на форуме эту тему. Загрузил приведенный файл. Ссылка на файлообменник не работает, возможно, материал там уже удален. А проблема осталась. Существует ли решение? |
|
Вот она слабость формул |
|
Я так и думал, что без макросов не получится… Сделаю тогда шаг назад и расскажу, зачем мне это нужно. Есть два диапазона на разных листах в одной книге. Нужно, чтобы пользователь мог, поставив курсор на ячейку в первом диапазоне, увидеть где-нибудь соответствующее значение из второго диапазона (если оно существует). Можно ли добиться нужного эффекта без макросов? |
|
R Dmitry Пользователь Сообщений: 3103 Excel,MSSQL,Oracle,Qlik |
#14 19.11.2010 09:56:40 {quote}{login=Beard}{date=19.11.2010 09:52}{thema=}{post}Я так и думал, что без макросов не получится… Сделаю тогда шаг назад и расскажу, зачем мне это нужно. Есть два диапазона на разных листах в одной книге. Нужно, чтобы пользователь мог, поставив курсор на ячейку в первом диапазоне, увидеть где-нибудь соответствующее значение из второго диапазона (если оно существует). Можно ли добиться нужного эффекта без макросов?{/post}{/quote} ого 55551 Прикрепленные файлы
|
|
Прошу прощения за возможную бестолковость, но я не понимаю, как предложенный файл связан с моей задачей. Можно пояснить для непонятливых? |
|
R Dmitry Пользователь Сообщений: 3103 Excel,MSSQL,Oracle,Qlik |
#16 19.11.2010 10:34:56 {quote}{login=Beard}{date=19.11.2010 10:18}{thema=}{post}Прошу прощения за возможную бестолковость, но я не понимаю, как предложенный файл связан с моей задачей. Можно пояснить для непонятливых?{/post}{/quote}
|
|
Без выбора не годится. Диапазоны сравнительно большие, на экране не помещаются, поэтому простое размещение на том же листе (хоть во вставке, хоть в обычных ячейках) не помогает: чтобы посмотреть дополнительную информацию, придется делать скролл, а потом искать исходную позицию. Тогда уж проще сходить на соседний лист и посмотреть. Собственно, сейчас оно так и делается, но хочется реализовать более удобный способ. |
|
R Dmitry Пользователь Сообщений: 3103 Excel,MSSQL,Oracle,Qlik |
#18 19.11.2010 11:56:21 {quote}{login=Beard}{date=19.11.2010 11:00}{thema=}{post}Без выбора не годится. Диапазоны сравнительно большие, на экране не помещаются, поэтому простое размещение на том же листе (хоть во вставке, хоть в обычных ячейках) не помогает: чтобы посмотреть дополнительную информацию, придется делать скролл, а потом искать исходную позицию. Тогда уж проще сходить на соседний лист и посмотреть. Собственно, сейчас оно так и делается, но хочется реализовать более удобный способ.{/post}{/quote} *14741*
|
|
{quote}{login=R Dmitry}{date=19.11.2010 11:56}{thema=Re: }{post} Не облегчит. У меня нет зависимости между ячейками ни в ту, ни в другую сторону. |
|
гиперссылки |
|
А где размещать эти гиперссылки? Связь примерно такая. |
|
Может, Вид — Окно — Разделить? |
|
в модуль листа |
|
Спасибо всем, кто пытается помочь. Разделять окно имело бы какой-то смысл, если бы можно было в каждой половине делать независимый скроллинг. Решения с макросами не годятся по исходной постановке задачи: макросы запрещены. В идеале значение второй ячейки должно появляться в виде подсказки, но похоже, подсказку нельзя сделать динамической. |
|
слэн Пользователь Сообщений: 5192 |
ну не разделить, а расположить.. |
Решения с макросами не годятся по исходной постановке задачи: макросы запрещены. |
|
можно использовать выпадающий список (проверка данных без остановки по ошибки) но посмотреть можно будет только значение, а не формулу, и если пользователь всё таки выберет что-то из выпадающего списка — пощады содержимому ячейки не будет! |
|
Beard Гость |
#28 19.11.2010 16:07:26 Таблицу будут заполнять люди с весьма низкой квалификацией. По той же причине не подойдет вариант с расположением окон. А вот выпадающий список может оказаться интересным. Надо попробовать. |