Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2010, 09:25   #1
kipish_lp
Форумчанин
 
Регистрация: 25.11.2009
Сообщений: 113
По умолчанию Как получить название диапазона активной ячейки?

Здравствуйте, искала по форуму, но не нашла. Подскажите пожалуйста, как в vba получить название диапазона, в котором находится активная ячейка?
kipish_lp вне форума Ответить с цитированием
Старый 14.05.2010, 10:07   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Коряво, но работает:
Код:
Option Explicit

Sub tt()
Dim nn As Object, cc As Range
For Each nn In ActiveWorkbook.Names
For Each cc In Range(nn)
If Selection.Address = cc.Address Then MsgBox nn.Name
Next
Next
End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 14.05.2010, 10:29   #3
kipish_lp
Форумчанин
 
Регистрация: 25.11.2009
Сообщений: 113
По умолчанию

nn возвращает имя листа#REF
Код:
"=Отопление!#REF!"
И выдает ошибку.
kipish_lp вне форума Ответить с цитированием
Старый 14.05.2010, 10:30   #4
maksim_serg
Форумчанин
 
Аватар для maksim_serg
 
Регистрация: 25.03.2010
Сообщений: 417
По умолчанию

а так:
Код:
Sub CommandButton1_Click()
MsgBox Selection.Address
End Sub
maksim_serg вне форума Ответить с цитированием
Старый 14.05.2010, 10:40   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Определитесь, что Вам надо - адрес, номер ряда, буква/номер столбца или имя именованного диапазона. Я тянул последнее.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 14.05.2010, 10:43   #6
kipish_lp
Форумчанин
 
Регистрация: 25.11.2009
Сообщений: 113
По умолчанию

Да в том-то и дело, что мне надо получить Имя диапазона, где находится активная ячейка, а не просто адрес. Но все, что я ни делаю, выводит ошибку ссылки. Хотя, все диапазоны, находящиеся на листе вручную я могу посмотреть.
kipish_lp вне форума Ответить с цитированием
Старый 14.05.2010, 10:43   #7
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Коряво, но работает:
Код:
Option Explicit

Sub tt()
Dim nn As Object, cc As Range
For Each nn In ActiveWorkbook.Names
If Mid$(nn, 2, InStr(nn, "!") - 2) = ActiveCell.Parent.Name Then
If Not Intersect(Range(Mid$(nn, InStr(nn, "!") + 1)), ActiveCell) Is Nothing Then MsgBox nn.Name
End If
Next
End Sub
Хотя такой код нормально будет работать только с именами, заданными явно, а не через формулы. С формулами надо подумать.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru

Последний раз редактировалось The_Prist; 14.05.2010 в 11:13.
The_Prist вне форума Ответить с цитированием
Старый 14.05.2010, 11:25   #8
kipish_lp
Форумчанин
 
Регистрация: 25.11.2009
Сообщений: 113
По умолчанию

Мож я какая-то не такая?
Method 'Range' of object'_Global' failed
в этом месте:
Код:
If Not Intersect(Range(Mid$(nn, InStr(nn, "!") + 1)), ActiveCell) Is Nothing Then
nn возвращает все то же.
kipish_lp вне форума Ответить с цитированием
Старый 14.05.2010, 11:50   #9
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Цитата:
Сообщение от kipish_lp Посмотреть сообщение
Мож я какая-то не такая?
Method 'Range' of object'_Global' failed
в этом месте:
Конечно, не такая
Я ж написал - только для ЯВНО ЗАДАННЫХ ДИАПАЗОНОВ! Я на 100% уверен, что Ваши диапазоны заданы через формулы, а не ссылками напрямую. Вот и возникает ошибка, т.к. нет такого адреса, к примеру: =СМЕЩ(Лист1!A1;;;СЧЁТЗ(Лист1!A1:A10 0))

С формулами сложнее гораздо. Думать надо...
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 14.05.2010, 12:24   #10
kipish_lp
Форумчанин
 
Регистрация: 25.11.2009
Сообщений: 113
По умолчанию

=Отопление!$17:$20
Отопление - это название листа. Это формула? Я создала обычный диапазон на текущем листе. Выделила диапазон и в окошке "Имя" написала название диапазона. Как сделать иначе, чтобы это не была формула?
kipish_lp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
определить тактовою частоту процессора и узнать название активной видеокарты и объём памяти SalasAndriy C++ Builder 7 14.04.2012 16:17
Как получить в VBA номера строк выделенного диапазона? Chelentano Microsoft Office Excel 10 04.11.2010 14:25
Как обозначить ячейку на одну правее от активной ячейки? ru3000 Microsoft Office Excel 4 28.07.2009 08:03
как наиболее просто получить название букв колонки для ячейки motorway Microsoft Office Excel 2 03.07.2009 04:52
Как определить номер строки верхней левой ячейки диапазона Porog Microsoft Office Excel 8 09.05.2008 08:37