Как обратиться к листу с числовым именем VBA
Модератор: Naeel Maqsudov
Здраствуйте !
Программно в книге создаються листы с числовыми именами 1,2,3,....356 и т.д. В процессе работы с базой придётся и удалять.
Так вот столкнулся с проблемой, не могу обратиться к нужному листу.
Например, мне нужен лист с именем 7, а программа пытаеться найти лист с порядковым №7, хотя у 7 листа порядковый №5 и если бы такой лист существовал и имя его например 43 он его удалит.Почему, как это обойти. На скриншоте видно что имя "7", а нет всёравно ищет порядковый №7.
Программно в книге создаються листы с числовыми именами 1,2,3,....356 и т.д. В процессе работы с базой придётся и удалять.
Так вот столкнулся с проблемой, не могу обратиться к нужному листу.
Например, мне нужен лист с именем 7, а программа пытаеться найти лист с порядковым №7, хотя у 7 листа порядковый №5 и если бы такой лист существовал и имя его например 43 он его удалит.Почему, как это обойти. На скриншоте видно что имя "7", а нет всёравно ищет порядковый №7.
- Вложения
-
- скрин.zip
- (80.08 КБ) 31 скачивание
- mc-black
- Сообщения: 250
- Зарегистрирован: 08 май 2008, 16:09
- Откуда: Россия, Нижний Новгород
- Контактная информация:
Попробуйте обращаться к листам так Worksheets(CStr(i)) или так Worksheets(Format(i,"0")). Главное - это переменную с числом надо явным образом преобразовывать к строке. Я в книгах часто использую нумерацию типа '01', '02', .. '09', '10', '11'... Соответственно обращаюсь я к ним в цикле, где i - числовой счетчик. Мои преобразования выглядят так: Worksheets(Format(i,"00"))
На заказ: VBA, Excel mc-black@yandex.ru
Премного благодарен mc-black !!!
Я не там преобразовывал формат, теперь всё в порядке !!!
Ещё раз большое спасибо.
А можно ещё вопрос ? В процессе работы с базой число листов может вырасти до 500, не глюканёт ли программа. В справке сказано что число листов ограничено ресурсами компа, а как узнать какой комп нужен для такой базы. Может у юзера например и 50 листов не потянет. Мало информации на эту тему.
Я не там преобразовывал формат, теперь всё в порядке !!!

Ещё раз большое спасибо.
А можно ещё вопрос ? В процессе работы с базой число листов может вырасти до 500, не глюканёт ли программа. В справке сказано что число листов ограничено ресурсами компа, а как узнать какой комп нужен для такой базы. Может у юзера например и 50 листов не потянет. Мало информации на эту тему.

- mc-black
- Сообщения: 250
- Зарегистрирован: 08 май 2008, 16:09
- Откуда: Россия, Нижний Новгород
- Контактная информация:
Сейчас экспериментировал с количеством листов, без проблем можно их создавать довольно много. Пока без проблем создал книгу с 2048-ю пустыми листами, можно и больше... Вероятно, что технически их количество ограничено типом данных для хранения номера листа, т.е. Ineger или может даже скорее Long, но число листов надо ограничивать по соображениям целесообразности (у меня Excel 2003). Если листов с данными много, книга занимает слишком много оперативной памяти. В конце концов, система начнет использовать своп (файл подкачки) и сильно при этом тормозить. Да и сохранение файла будет происходить черезвычайно долго - программа будет подвисать при записи на диск и чтении из него. Думаю все решать Вам, но в разумных пределах. Что касается компьютера - оперативной памяти лучше иметь побольше. А разбивать всю информацию на отдельные файлы будет правильней. Еще лучше - использовать для хранения больших объемов данных базу данных.
На заказ: VBA, Excel mc-black@yandex.ru
У меня проблем пока нет, потому что я базу полностью не заполняю при разработке кода. Я переживаю за кладовщиц которые будут юзать базу и раздуют её до 200/300 листов.
У них примерно 1,5 целерон с 512 памятью (у меня комп поновее). То что будет тормозить чёрт с ним лиж бы не вылетел debug, а то у них сразу инфаркт микарда будет. В общем из Вашего опыта я понял что кроме тормозов никаких проблем не будет.
На предприятии компы выдаються сами понимаете , без учёта потребности, да и ещё стоит запрет админа на установку программ exe и подключение любых носителей , вот и пытаюсь решить проблемы простым Excel VBA програмками(только представте составить заявку ТМЦ на 300 человек около 300 наименований вручную)
Огромное спасибо за совет.
У них примерно 1,5 целерон с 512 памятью (у меня комп поновее). То что будет тормозить чёрт с ним лиж бы не вылетел debug, а то у них сразу инфаркт микарда будет. В общем из Вашего опыта я понял что кроме тормозов никаких проблем не будет.
На предприятии компы выдаються сами понимаете , без учёта потребности, да и ещё стоит запрет админа на установку программ exe и подключение любых носителей , вот и пытаюсь решить проблемы простым Excel VBA програмками(только представте составить заявку ТМЦ на 300 человек около 300 наименований вручную)
Огромное спасибо за совет.
-
- Сообщения: 526
- Зарегистрирован: 04 фев 2007, 18:37
- Откуда: Сургут
- Контактная информация:
Здравствуйте vint.
самое лучшее решение для Вашей задачи:
Евгений.
самое лучшее решение для Вашей задачи:
Не теряйте времени, займитесь изучением и внедрением систем управления базами данных (СУБД)." писал(а):... использовать для хранения больших объемов данных базу данных.
Евгений.
Здраствуйте Teslenko_EA!
Понятия не имею что такое (СУБД), но думаю это то что мне нужно, обязательно возмусь за это дело.
Большое спасибо за совет.
Понятия не имею что такое (СУБД), но думаю это то что мне нужно, обязательно возмусь за это дело.
Большое спасибо за совет.
- mc-black
- Сообщения: 250
- Зарегистрирован: 08 май 2008, 16:09
- Откуда: Россия, Нижний Новгород
- Контактная информация:
Ну раз на вашем предприятии везде стоит MS Office, то должен быть и MS Access. Это пример СУБД (системы управления базами данных). Сделать что-то для предприятия на Access в общем можно. Можно даже связать макросами Access и Excel для решения каких-то задач.
На заказ: VBA, Excel mc-black@yandex.ru
Да конешно MS Access установлен, я про него и подумал.
Уже скачал книжку "Мартин_Грубер_-_Понимание_SQL", многие рекомендуют.
На первый взгляд показалось страшновато, ведь я пару месяцев как взялся за програмирование и работал только в Excel на VBA а SQL как я понял немног отличный язык. Ну ничего , думаю суть одна и та же главное начать. Единственное проще было бы начинать с какого нибудь простого примера типа сделать например телефонный справочник или что-то подобное небольшое чтобы можно было понять суть создания таких баз. Так я начинал с VBA и чего не нашел в книжке, может плохо искал? Вобщем как говориться гугл мне в помощь, жаль что нет рядом
опытного человека который помог бы сделать пару первых шагов.
Спасибо за советы. Буду пробывать, т.к. мне это действительно нужно.
Уже скачал книжку "Мартин_Грубер_-_Понимание_SQL", многие рекомендуют.
На первый взгляд показалось страшновато, ведь я пару месяцев как взялся за програмирование и работал только в Excel на VBA а SQL как я понял немног отличный язык. Ну ничего , думаю суть одна и та же главное начать. Единственное проще было бы начинать с какого нибудь простого примера типа сделать например телефонный справочник или что-то подобное небольшое чтобы можно было понять суть создания таких баз. Так я начинал с VBA и чего не нашел в книжке, может плохо искал? Вобщем как говориться гугл мне в помощь, жаль что нет рядом
опытного человека который помог бы сделать пару первых шагов.
Спасибо за советы. Буду пробывать, т.к. мне это действительно нужно.
- mc-black
- Сообщения: 250
- Зарегистрирован: 08 май 2008, 16:09
- Откуда: Россия, Нижний Новгород
- Контактная информация:
Мне впервые пришлось познакомиться с азами SQL, когда я учился в универе и нам преподавали FoxPro (нет, не Visual). На дом дали задание в учебнике прочитать главу на 5-10 страниц объемом. После этого даже несмотря на то, что у меня не было тогда компьютера дома, сложилось вполне достаточное представление об SQL. А по-нормальному использовать SQL в программах я начал через несколько лет, когда в Visual Basic 6 узнал про ADO. Тогда в том, как составить строку запроса, пробем не возникло. Это я к тому, что основы SQL можно изучить и понять за 1-2 вечера с книжкой + 1 вечер за компьютером. А глубинные тонкости постигать годами :-)
На заказ: VBA, Excel mc-black@yandex.ru