Привет, у меня есть немного сложная настройка диапазонов данных, которые поступают в Excel (версия 2003) с помощью XML / Soap и управляются VBA. Результат отображается в нескольких списках на разных листах. Основной лист данных имеет кодовое имя «shData», имя листа - «Данные» (пока что довольно изобретательно, хм?) И содержит около 200 различных диапазонов данных. Одна из отображаемых страниц называется Setup или shSetup.
Диапазон данных в данных может выглядеть следующим образом:
ID Last First Group
1 Dwyer Barb A
2 King Fu A
3 Rea Di A. C
Допустим, диапазон локально назван как «Данные! Day0_Users».
Другой диапазон, скажем «Данные! Day1_Users», может быть просто заголовком (если нет данных):
ID Last First Group
Эти диапазоны вставляются в VBA, удаляются из них и изменяются в VBA, поэтому мне нужен гибкий механизм ссылок.
Теперь ListBoxes может использовать именованный диапазон в качестве ListFillRange. Для этого я определяю локальное имя в программе установки, которое ссылается на имя в данных, но использует смещение для исключения строки заголовка: shSetup name "lbSomeListbox", ссылается на OFFSET (Data! Day0_Users, 1, ROWS (Data! Day0_Users) -1)
Все идет нормально. Очевидно, что когда диапазон в Data пустой, как в «Data! Day1_Users» в моем примере, такая ссылка вызовет ошибку. В таком случае я хотел бы заменить ссылку на пустой массив (который определяется как «Setup! EmptyRange5Col», который, в свою очередь, снова является ссылкой смещения на Data! EmptyRange5Col, чтобы возвращать только часть «-».
Empty Empty Empty Empty
- - - -
Теперь я попытался определить свой локальный диапазон как имя, используя механизм управления ошибками excels, но он не работает - в следующем случае следует использовать данные со смещением или заменить его моим пустым массивом.
=IF(ISERROR(OFFSET(Data!Day0_Users, 1, , ROWS(Data!Day0_Users)-1)), Setup!EmptyRange5Col, OFFSET(Data!Day0_Users, 1, , ROWS(Data!Day0_Users)-1))
Если я использую ту же формулу (я также пробовал несколько других вариантов) на самом листе, используя = ISREF (IF (IsError .....), он всегда оценивается как true; попытка использования только одного ISERROR всегда оценивает false , все как и следовало ожидать.
Но как только я поместил его в определение имени, ссылка не работает, вызовы shSetup.Names (...). RefersToRange вызывают ошибки во время выполнения и т. Д.
Есть ли в Excel недокументированные ограничения на использование формул для имен или я глуп? Я смотрю на это около 2 часов и не вижу света. Буду очень признателен, если вы подтолкнете меня в правильном направлении.
Заранее спасибо,
Stefan