Страница 1 из 2

Как обратиться к листу с числовым именем VBA

Добавлено: 29 апр 2009, 17:05
vint
Здраствуйте !
Программно в книге создаються листы с числовыми именами 1,2,3,....356 и т.д. В процессе работы с базой придётся и удалять.
Так вот столкнулся с проблемой, не могу обратиться к нужному листу.
Например, мне нужен лист с именем 7, а программа пытаеться найти лист с порядковым №7, хотя у 7 листа порядковый №5 и если бы такой лист существовал и имя его например 43 он его удалит.Почему, как это обойти. На скриншоте видно что имя "7", а нет всёравно ищет порядковый №7.

Re: Как обратиться к листу с числовым именем VBA

Добавлено: 29 апр 2009, 19:31
mc-black
Попробуйте обращаться к листам так Worksheets(CStr(i)) или так Worksheets(Format(i,"0")). Главное - это переменную с числом надо явным образом преобразовывать к строке. Я в книгах часто использую нумерацию типа '01', '02', .. '09', '10', '11'... Соответственно обращаюсь я к ним в цикле, где i - числовой счетчик. Мои преобразования выглядят так: Worksheets(Format(i,"00"))

Re: Как обратиться к листу с числовым именем VBA

Добавлено: 30 апр 2009, 08:30
vint
Премного благодарен mc-black !!!
Я не там преобразовывал формат, теперь всё в порядке !!! ;)
Ещё раз большое спасибо.

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

Re: Как обратиться к листу с числовым именем VBA

Добавлено: 30 апр 2009, 15:26
mc-black
Сейчас экспериментировал с количеством листов, без проблем можно их создавать довольно много. Пока без проблем создал книгу с 2048-ю пустыми листами, можно и больше... Вероятно, что технически их количество ограничено типом данных для хранения номера листа, т.е. Ineger или может даже скорее Long, но число листов надо ограничивать по соображениям целесообразности (у меня Excel 2003). Если листов с данными много, книга занимает слишком много оперативной памяти. В конце концов, система начнет использовать своп (файл подкачки) и сильно при этом тормозить. Да и сохранение файла будет происходить черезвычайно долго - программа будет подвисать при записи на диск и чтении из него. Думаю все решать Вам, но в разумных пределах. Что касается компьютера - оперативной памяти лучше иметь побольше. А разбивать всю информацию на отдельные файлы будет правильней. Еще лучше - использовать для хранения больших объемов данных базу данных.

Re: Как обратиться к листу с числовым именем VBA

Добавлено: 30 апр 2009, 23:02
vint
У меня проблем пока нет, потому что я базу полностью не заполняю при разработке кода. Я переживаю за кладовщиц которые будут юзать базу и раздуют её до 200/300 листов.
У них примерно 1,5 целерон с 512 памятью (у меня комп поновее). То что будет тормозить чёрт с ним лиж бы не вылетел debug, а то у них сразу инфаркт микарда будет. В общем из Вашего опыта я понял что кроме тормозов никаких проблем не будет.
На предприятии компы выдаються сами понимаете , без учёта потребности, да и ещё стоит запрет админа на установку программ exe и подключение любых носителей , вот и пытаюсь решить проблемы простым Excel VBA програмками(только представте составить заявку ТМЦ на 300 человек около 300 наименований вручную)
Огромное спасибо за совет.

Re: Как обратиться к листу с числовым именем VBA

Добавлено: 02 май 2009, 15:26
Teslenko_EA
Здравствуйте vint.
самое лучшее решение для Вашей задачи:
&quot писал(а):... использовать для хранения больших объемов данных базу данных.
Не теряйте времени, займитесь изучением и внедрением систем управления базами данных (СУБД).
Евгений.

Re: Как обратиться к листу с числовым именем VBA

Добавлено: 04 май 2009, 11:00
vint
Здраствуйте Teslenko_EA!
Понятия не имею что такое (СУБД), но думаю это то что мне нужно, обязательно возмусь за это дело.
Большое спасибо за совет.

Re: Как обратиться к листу с числовым именем VBA

Добавлено: 13 май 2009, 11:15
mc-black
Ну раз на вашем предприятии везде стоит MS Office, то должен быть и MS Access. Это пример СУБД (системы управления базами данных). Сделать что-то для предприятия на Access в общем можно. Можно даже связать макросами Access и Excel для решения каких-то задач.

Re: Как обратиться к листу с числовым именем VBA

Добавлено: 13 май 2009, 12:27
vint
Да конешно MS Access установлен, я про него и подумал.
Уже скачал книжку "Мартин_Грубер_-_Понимание_SQL", многие рекомендуют.
На первый взгляд показалось страшновато, ведь я пару месяцев как взялся за програмирование и работал только в Excel на VBA а SQL как я понял немног отличный язык. Ну ничего , думаю суть одна и та же главное начать. Единственное проще было бы начинать с какого нибудь простого примера типа сделать например телефонный справочник или что-то подобное небольшое чтобы можно было понять суть создания таких баз. Так я начинал с VBA и чего не нашел в книжке, может плохо искал? Вобщем как говориться гугл мне в помощь, жаль что нет рядом
опытного человека который помог бы сделать пару первых шагов.
Спасибо за советы. Буду пробывать, т.к. мне это действительно нужно.

Re: Как обратиться к листу с числовым именем VBA

Добавлено: 13 май 2009, 13:07
mc-black
Мне впервые пришлось познакомиться с азами SQL, когда я учился в универе и нам преподавали FoxPro (нет, не Visual). На дом дали задание в учебнике прочитать главу на 5-10 страниц объемом. После этого даже несмотря на то, что у меня не было тогда компьютера дома, сложилось вполне достаточное представление об SQL. А по-нормальному использовать SQL в программах я начал через несколько лет, когда в Visual Basic 6 узнал про ADO. Тогда в том, как составить строку запроса, пробем не возникло. Это я к тому, что основы SQL можно изучить и понять за 1-2 вечера с книжкой + 1 вечер за компьютером. А глубинные тонкости постигать годами :-)