|
![]() |
#1 |
Moderator
|
Не знаю тонкостей задачи (например, необходимость перебора коллекции Names мне неочевидна), но на всякий случай на заметку:
Допустим, ячейке B2 присвоено имя MyCell, тогда ...Range("MyCell").Address() вернет строку: $B$2. Точно также, как и ...Range("B2").Address() вернет ту же строку: $B$2. P.S. Впрочем, AlexSD уже всё сказал ![]() P.P.S. А если потребуются целочисленные номера строк и столбцов, тогда ...Range("MyCell").Row() и ...Range("MyCell").Column(). И убереги Вас Бог получать букву столбца для того, чтобы потом по нему перебором в цикле алфавита вычислять номер столбца... ![]() |
|
|
За это сообщение автора поблагодарили: player (1). |
![]() |
#2 |
Moderator
|
Всё же попробуем разобраться, почему не работает исходный код. Должен сработать следующий вариант:
X++: names = comWorkSheet.Names(); name = names.Item(_anyVal); tmp = name.RefersToR1C1(); ret = [tmp.bStr()]; * имя ячейки введено как имя уровня листа, т.е. с именем листа, например, "Sheet1!MyCell" (а не просто "MyCell") * и comWorkSheet является тем самым листом (например, Sheet1), на котором это имя определено. Если же имя ячейки было задано как имя уровня рабочей книги - просто "MyCell" (а, скорее всего, именно так и было), то спасет тот же самый код, если вместо листа comWorkSheet указать книгу (допустим, некий comWorkBook) X++: COM comWorkBook;
comWorkBook = ...; // здесь нужно позаботиться о его получении
names = comWorkBook.Names();
name = names.Item(_anyVal);
tmp = name.RefersToR1C1();
ret = [tmp.bStr()]; |
|
|
За это сообщение автора поблагодарили: gl00mie (3). |
![]() |
#3 |
Участник
|
Цитата:
![]() |
|
![]() |
#4 |
Moderator
|
Ох, фраза моя, наверное, не с тем оттенком прозвучала...
![]() Имелось в виду, что-то типа "Товарисч! Просто бери Range(...).Column() и радуйся жизни!" вместо того, чтобы найти букву, а потом подать ее на вход одного из этих... ах, каких полезных методов, чтобы таки наконец получить цифру! ![]() |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|