|
|
|||||||||||
Как узнать Item листа в книге Excel09.07.2012, 13:35. Показов 39085. Ответов 23
Метки нет (Все метки)
есть большая книга (листов больше 1000)
Не ругайте - так удобнее мне для своих целей Name листов меняются программно, а item - величина постоянная Мне нужно оперировать доступом к конкретному листу по Item, для чего его сначала нужно узнать что-то типа
и правильно ли я дальше действую:
0
|
|||||||||||
| 09.07.2012, 13:35 | |
|
Ответы с готовыми решениями:
23
Как узнать размер листа в Excel? Создание листа в рабочей книге Excel |
|
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
|
||||||
| 09.07.2012, 13:50 | ||||||
|
Можно с Index`ом попробовать (если я задачу понял правильно)?
2
|
||||||
|
|
|
| 09.07.2012, 14:58 [ТС] | |
|
а index не меняется, если лист относительно других листов поменяет свое положение?
у меня листы тасуются в ходе работы пользователем (мной, лентяем), как колода карт блин.... и чем CodeName отличатеся от Item? вроде именно Item предназначен для таких целей... вот только криво как-то он реализован для листов... или я криво к нему обращаюсь...
0
|
|
|
1703 / 190 / 19
Регистрация: 20.11.2011
Сообщений: 281
|
|
| 09.07.2012, 15:14 | |
|
Обращаться по item, index - самый ненадежный способ. Используйте свойства name, или как советовал Александр(ikki) - codename. А Ваш вариант как раз:
id_sheet = ActiveSheet.Index - индекс листов меняется из-за удаления-добавления-перемещения. Саш, ток я не понял, почему хлопотно codename? Чаще даже удобней, чем name:-)
0
|
|
|
призрак
|
||
| 09.07.2012, 15:24 | ||
|
(work)sheets() требуют либо номер, либо имя. по CodeName - через цикл перебора листов (именно это я и называю "хлопотно"). конечно, можно использовать CodeName непосредственно в тексте макроса, но это если оно известно (лист существует) на этапе разработки. Добавлено через 2 минуты AndreA SN, у листа нет свойства Item. это "умолчальное" свойство коллекции листов. Sheets.Item("Лист1") и Sheets("Лист1") - одно и то же.
1
|
||
|
1703 / 190 / 19
Регистрация: 20.11.2011
Сообщений: 281
|
|
| 09.07.2012, 15:27 | |
|
Сравни:
Set rng = Worksheets("Лист1").[a2:a20] Set rng = Лист1.[a2:a20] Или просто листов: Set sh = Worksheets("Лист1") Set sh = Лист1
0
|
|
|
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
|
|||||||
| 09.07.2012, 15:32 | |||||||
![]() А чем классика не устраивает? Назначил переменныю и спи спокойно ![]()
1
|
|||||||
|
369 / 78 / 6
Регистрация: 23.05.2012
Сообщений: 232
|
|
| 09.07.2012, 22:16 | |
|
0
|
|
|
призрак
|
||||||
| 09.07.2012, 22:40 | ||||||
Сообщение было отмечено как решение
Решение попробую...у листа рабочей книги (объекты worksheet, chart) есть свойства index, name, codename index - текущий номер листа по порядку (включая скрытые), может меняться пользователем при изменении порядка и количества листов; name - то, что отбражается на ярлычке, может меняться пользователем (конечно. если книга не защищена); codename - "внутреннее" имя листа, "обычному" пользователю невидимое и недоступное, поэтому не может меняться пользователем. кроме того, codename является свойством read-only и через VBA также не может быть изменено. *) в VBE в окне проекта в списке объектов сначала указаны кодовые имена листов, а затем, в скобках, "обычные" имена. "обычные" и "необычные" ("кодовые") имена могут совпадать, могут - нет. но в пределах каждого из множеств имён имя должно быть уникальным (без учета регистра символов) изменить codename можно через интерфейс VBE - ЛКМ по имени листа в списке объектов - F4 - свойство (Name) - именно которое со скобками. доступ к отдельному листу возможен: - по индексу - по "обычному" имени и для того, и для другого, используется свойство item коллекций sheets, worksheets, charts объекта workbook: sheets.item(2) charts.item("диаграмма 5") и т.п. т.к. свойство item является "умолчальным", то допустимы и конструкции sheets(2) charts("диаграмма 5") прямого доступа по "кодовому" имени листа через коллекцию - нет. но, зная codename листа на этапе разработки проекта (макроса). можно прямо это имя написать в качестве идентификатора листа: лист1.[a1] - обращение к ячейке A1 листа с кодовым именем "лист1" ("Лист1" и т.п.) если же нужно получить лист по кодовому имени, но на этапе разработки оно было неизвестно, то примерно так:
![]() _________________________ *) однако, может: Как узнать Item листа в книге Excel
8
|
||||||
|
|
|
| 10.07.2012, 00:03 | |
|
Такое великолепное описание, почти мини-статья.
![]() Даже сохраню ссылку для других, чтобы не объяснять. P.S. всегда раньше считал, что лист1.[a1] обращается к обычному имени листа, а это не так. А все потому, что по-умолчанию кодовое имя листа = обычному его имени.
0
|
|
|
369 / 78 / 6
Регистрация: 23.05.2012
Сообщений: 232
|
|
| 10.07.2012, 01:12 | |
|
0
|
|
|
призрак
|
|
| 10.07.2012, 03:48 | |
|
забыл написать: изменение CodeName в отличие от Name разрешается в пределах, обычных для идентификаторов VBA - оно должно начинаться с буквы, содержать буквы, цифры, знак подчеркивания, т.е. следующие имена для свойства CodeName недопустимы:
"123" 123 1лист лист 1 лист.1 sheet%% кроме того, оно не должно совпадать с ключевыми словами VBA - такими как for, to, sub указать же любую из этих строк в качестве "обычного" имени листа (Name) вполне можно. правда, там свои ограничения - например, обычному имени в русской локали нельзя задать "журнал", а свойству codename - можно.
2
|
|
|
1703 / 190 / 19
Регистрация: 20.11.2011
Сообщений: 281
|
|||||||
| 10.07.2012, 07:51 | |||||||
Сообщение было отмечено как решение
Решение
3
|
|||||||
|
призрак
|
||
| 10.07.2012, 08:35 | ||
|
спасибо за поправку.
хотя странно выглядит - sheets являются объектами книги, а их свойство codename меняется только через vbcomponents()... а почему разрешено только так? не в курсе? Добавлено через 11 минут ![]() а программно её можно снять/установить?
0
|
||
|
1703 / 190 / 19
Регистрация: 20.11.2011
Сообщений: 281
|
||
| 10.07.2012, 08:50 | ||
1
|
||
|
призрак
|
||
| 10.07.2012, 08:57 | ||
|
умгу...
я не там искал - в свойствах проекта... а надо было в параметрах книги. спасибо. ![]() ээээ.... а вот как-нибудь... программно вызвать это диалоговое окошко и потом через SendKeys послать нужный набор Tab'ов и Enter'ов?.. нельзя? (я вдруг обнаружил в себе желание стать хакером )
0
|
||
|
1703 / 190 / 19
Регистрация: 20.11.2011
Сообщений: 281
|
|
| 10.07.2012, 09:01 | |
|
Дерзай, авось получится:-)
0
|
|
| 10.07.2012, 09:01 | |
|
Помогаю со студенческими работами здесь
20
Как узнать имя активного листа в Excel-е? Как узнать точную высоту листа в Excel?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|