Ограничение количества «названных диапазонов» в методе Range

Я использую следующий код:

Dim rng As Range Set rng = Workbooks("import sheet.xls").Sheets("import").Range("project_name,project_author,project_code,project_breaker,default_fault_ac_mcb,default_fault_ac_mccb,default_fault_dc,default_fault_acb,default_rvdrop,default_svdrop,default_eff,default_pfactor,default_ratio,default_freq,default_sfactor_ac,default_spfactor") For Each cell In rng.Cells MsgBox cell Next cell 

Теперь project_name , project_author и т. Д. – это разные именованные диапазоны в листе. Проблема заключается в том, что я добавляю другой именованный диапазон в указанный выше список (уже определенный), я получаю ошибку времени выполнения 1004 («метод выбора класса диапазона не удался»).

Существует ли ограничение количества именованных диапазонов, которые можно добавить к объекту диапазона?

Я не мог найти ничего о том, почему это происходит, но я все еще смотрю.

Однако это работает. Вы можете комбинировать диапазон с помощью UNION

 Sub Sample() Dim rng As Range, cell As Range, newRng As Range Set rng = Sheets("import").Range("project_name,project_author,project_code,project_breaker,default_fault_ac_mcb,default_fault_ac_mccb,default_fault_dc,default_fault_acb,default_rvdrop,default_svdrop,default_eff,default_pfactor,default_ratio,default_freq,default_sfactor_ac,default_spfactor") Set newRng = Union(rng, Sheets("import").Range("default_sid")) For Each cell In newRng.Cells MsgBox cell Next cell End Sub 

ОБНОВЛЕНИЕ : я не смог найти какой-либо документ Microsoft, который описывает это поведение, но после некоторых экспериментов я могу подтвердить, что максимальное число именованных диапазонов, которые можно добавить в объект диапазона, равно 16. Это поведение можно увидеть в Excel 2003, 2007 , и 2010 год.

Странно это поведение не было реплицировано в Excel 2011 (MAC). Я тестировал 19 имен, и это сработало.

БОЛЬШЕ ОБНОВЛЕНИЯ

После большего тестирования я обнаружил, что если вы Name1 свои диапазоны как Name1 , Name2 , Name3 т. Name2 , Name3 мне удалось добавить больше Name3 диапазонов в Excel 2003-2007-2010. Поэтому он должен что-то сделать с наименованием имен.

Я подал ошибку с Microsoft.

ОБРАЗЕЦ ОБРАЗЦА ДЛЯ ИСПЫТАНИЙ :

https://skydrive.live.com/redir.aspx?cid=cdd3f8abe20bbe3b&resid=CDD3F8ABE20BBE3B!157&parid=CDD3F8ABE20BBE3B!150&authkey=!ADP_QVBopsqenBA

Я не исследовал вашу проблему, но приведенные ниже пункты могут дать вам и Сиду некоторые намеки на возможное решение.

Если вы используете Rng.Address существует ограничение на размер строки. Я нашел комментарии в интернете, утверждая, что предел составляет 253, но я не верю в это. Rng.Address всегда усекается в конце полного поддиапазона, поэтому возвращаемая вами строка синтаксически корректна как раз неполная. Таким образом, предел зависит от точного размера строки поддиапазонов.

У меня была противоположная проблема. У меня был лист с тысячами рядов. Я использовал AutoFilter, чтобы выбрать интересующие строки и сохранить диапазон. Но Rng.Address дал мне первые 19 или около того диапазонов интересов. Мне пришлось использовать For Each Cell In Rng и собрать строку диапазона, чтобы получить полную строку.

Ваша строка длиной 255 символов. Очевидно, нет предела количеству поддиапазонов в объединении. Вы можете попробовать добавить поддиапазоны в союз отдельно.

Удачи.

PS Если вы хотите, чтобы моя сборка линейки строк была рада приветствовать.

Interesting Posts

Условное форматирование не работает с загруженными данными

Условный десятичный формат

Как создать исполняемое приложение для макроса Excel?

Выделение стоимости из базы данных

Преобразование десятичного MAC-адреса в шестнадцатеричный MAC-адрес

Как определить максимальное количество листов Excel, которые можно создать в программе C #?

Как узнать, что такое дата для следующей субботы или текущей субботы?

Избегайте «без следующего» End Sub

Excel Рассчитать среднюю и среднюю значения для нескольких листов и столбцов

Отображение строки данных

Как классифицировать столбец в excel на основе другого столбца, содержащего значение в строке с разделителем; где строка может иметь два отдельных слова

Таблицы, созданные с помощью проблемы диакритики MySQL for Excel

Как защитить имя листа не весь лист?

C #: Ошибка Печать значения даты в Excel

Копирование рабочих листов между книгами – Excel interop

Давайте будем гением компьютера.