Здравствуйте, Elena_, Вы писали: E_>Вообще-то не замечала, что с кавычками тоже проблемы Наконец-то до меня дошло, что значит эта история с кавычками Дело в том, что Excel позволяет создавать имена не только для диапазонов, но и для констант, например,
При этом имя PI не появится ни в списке имен слева от строки формул, ни в списке имен в диалоге Перейти (Правка->Перейти), оно будет только в общем списке имен (Вставка->Имя), так как оно не относится ни к какому диапазону, при этом его можно использовать в формулах, например,
Также можно создать имя и для строковой константы, например
Это имя Developer тоже не появится ни в списке имен слева от строки формул, ни не в списке имен в диалоге Перейти, так оно также не относится ни к какому диапазону, но его можно использовать в формулах типа
Поэтому, когда Вы добавляете имя, заключая ссылку на диапазон в кавычки, типа
то Вы фактически добавляете строковую константу, не имеющую отношения ни к какому диапазону, и просто по содержанию "похожую" на ссылку, а могло быть не "=""Лист1!$D$17""", а "=""Лист1!$ZZZZZ$177777""", и все бы прекрасно отработало Чтобы убедиться в этом, попробуйте выбрать Правка->Перейти на листе Лист1 и посмотреть, позволяет ли имя, добавленное с кавычками, перейти к диапазону, на который оно вроде бы ссылается, а на самом деле это не ссылка, а просто текстовая константа, содержащая ссылку. Естественно, чтобы получить диапазон, используя такое имя, нужно выполнить обратное преобразование, то есть константу преобразовать к ссылке, как раз то, о чем Вы говорили M>Получается нельзя напрямую использовать результат одной функции(Name.RefersTo()) как аргумент другой функции(Application.GetRange(Name.RefersTo()), сначала необходимо результат преобразовать, а потом уже использовать. Конечно, это не то, что должно быть Когда же имя создается с использованием именно ссылки, а не строковой константы,
тогда оно появляется и в списке имен слева от строки формул, и в диалоге Перейти, и выбрав его, там или там, Вы сразу переходите к диапазону, соответственно, и в коде дополнительного преобразования не требуется Если же, как я поняла, у Вас возникают проблемы именно с методом Add, когда Вы добавляете именно ссылку, а не строковую константу, попробуйте записать макрос при выполнении действия присвоения имени, и посмотрите, какой синтаксис требует Ваша версия Excel. Попробуйте выполнить этот макрос уже как макрос в Excel, а потом перенесите в С++. Как я уже говорила, у меня все проблемы бывают с вариациями запятых и точек с запятой |