![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 09.03.2011
Сообщений: 33
|
![]()
Посоветуйте, пожалуйста, наиболее оптимальный способ определить присутствует ли именованный диапазон полностью или частично в проверяемом(текущем)
Sub form_to_list() Dim m_range As Range Set m_range = ActiveSheet.Cells.Item(1) Set m_range = m_range.Offset(1, 0).Resize(ActiveSheet.UsedRange.Spe cialCells(xlCellTypeLastCell).Row, 1) Если существует какой либо именованный диапазон, ячейки которого содержит m_range, то определяем его имя и работаем с ним, иначе - ActiveSheet.Names.Add Name:="myName", RefersToR1C1:=m_range.Address Names("myName").RefersToR1C1 = Range([myName]).Resize(Range([myName]).End(xlDown).Row + 1, 1).Address Range([myName]).End(xlDown).Formula = Cells(1, 2).Value |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 14.05.2009
Сообщений: 311
|
![]()
см.
Intersect Union |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 09.03.2011
Сообщений: 33
|
![]()
В случае если пересечение есть, как вернуть имя диапазона? нужно всю коллекцию names перебирать или есть какое-то свойство/или метод, на подобие CurrentRegion??
Есть еще RefersToRange - не пойму как работает... Мож кто знает? |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 14.05.2009
Сообщений: 311
|
![]()
нужно всю коллекцию names перебирать
|
![]() |
![]() |
![]() |
#5 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
![]()
в rg1, rg2 - поместите предварительно два исследуемых диапазона.
например Код:
Код:
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]()
А если в текущий диапазон попадают (либо полностью, либо частично) несколько именованных диапазонов, какой из них требуется получить?
Так, или иначе, без перебора коллекции имен не обойтись.
Чем шире угол зрения, тем он тупее.
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 09.03.2011
Сообщений: 33
|
![]()
Вообще, задумывалось, что на листе должна быть одна табличка накопления информации- источник первичных данных(БД), причем с локализацией в начале листа. Она и должна стать именованным диапазоном. Присутствие прочих имен нежелательно, поэтому тот диапазон который имеет крайнее верхнее левое положение имеет преимущество.
Видимо буду перебирать все Name, выбирая тот, у которого первая ячейка имеет наименьшую строку и столбец и затем интерсектить, как предложил IgorGO Спасибо за советы, буду пробовать. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проверка на наличие файла | ruavia3 | Microsoft Office Excel | 1 | 05.02.2010 21:13 |
Проверка на наличие файла | Vladya | Общие вопросы Delphi | 7 | 10.10.2009 01:26 |
Проверка на наличие в массиве | istoe | Microsoft Office Excel | 8 | 26.08.2009 11:55 |
Проверка на наличие файла | Demetrius | Помощь студентам | 12 | 28.07.2009 00:27 |
Проверка на наличие таблицы в БД | Ramires | БД в Delphi | 3 | 18.12.2008 08:59 |