Имеются листы с именами с Лист1 по Лист46 и есть условие некое. Нужно перебрать листы, и если условие выполняется то внести в каждый изменения. Допустим нахожу я имя листа. А Как назначить его активным для внесения изменений именно в него, а то у меня все в первый лист забивает?
И вообще, зачем имя? Или проверять на условие нужно не все листы, а один или несколько определённых? Тогда цикл по массиву имён, проверяем конкретный лист по имени из массива.
Да я вообще из 1с-ки к Excel обращаюсь. Это всё и усложняет. Имя листа для меня это уникальный идентификатор в данном случаем. Есть таблица значений, в одной из колонок в ней имеются номера. Так вот когда номер в колонке совпадает с номером листа в этот лист надо внести изменения. Я сделал перебор строк + перебор листов, но забиваются данные в первый лист. Поэтому нашел я этот форум и сюда пишу... Поэтому и решил что нужно сделать лист активным или выбрать или текущим назначить, не знаю даже Пробовал Лист выбирать с Activate и Select: не хочет принимать
"забиваются данные в первый лист" потому, что Вы код написали неправильно. Ещё раз - нет никакой нужды активировать листы. Нужно просто изменить код. Как пример см. выше - данные заносятся во все листы без всяких активаций. Ну а как там конкретно в 1С - я не знаю, не работал. Но думаю, что если vbs может корректоно обращаться с листами - то сможет и 1С.
Вот этим ответом Вы меня совсем запутали. Как тогда обратиться к листу? Пример, в таблице в колонке идут номера 3, 13, 22, 5 Мне надо найти листы с такими именами (3, 13, 22, 5) и забить в них данные из строки, с соответствующим номером. Я пишу так: Получаю строку таблицы ТЗ далее
Для НомерЛиста = 1 По КоличествоЛистов Цикл ИмяЛиста = КнигаАЗК.WorkSheets(НомерЛиста).Name; ну и Если ТЗ.Номер = ИмяЛиста Тогда ЛистАЗК = КнигаАЗК.Worksheets(ИмяЛиста).Select; ЛистАЗК.Cells(НомерСтроки, "C").Value = ТЗ.Товар; и так далее что-то забиваем..... и все данные попадают в первый лист, а должны в 3, 13, 22 и 5
Какие еще варианты могут быть? Что не так по Вашему мнению?
Kaban пишет: А Как назначить его активным ... когда номер в колонке совпадает с номером листа
Уважаемый Kaban! Надо изначально писать, что у вас имеется некий список "номеров" листов и что надо оттуда взять этот номер. Только вот поясните, что значит "номер листа"? Индекс листа? Имя листа?
"Мне надо найти листы с такими именами (3, 13, 22, 5)" - так зачем искать? Обращайтесь напрямую к sheets("3") , sheets("13") , sheets("22") , sheets("5") , никаких переборов. Если возможно, что такого листа может не быть - тогда нужно обработать ошибку. Ну это уже по задаче, это другой вопрос.
Johny пишет: Уважаемый Kaban! Надо изначально писать, что у вас имеется некий список "номеров" листов и что надо оттуда взять этот номер. Только вот поясните, что значит "номер листа"? Индекс листа? Имя листа?
Из 1с-ки обращаюсь к Excel впервые, что накопал в инете так и написал. Синтаксис возможно не тот, я не знаю. А номерЛиста это числовая переменная для обращения к Номеру листа Excel чтобы получить дальше его имя.
Цитата
Hugo пишет: Обращайтесь напрямую к sheets("3"), sheets("13"), sheets("22"), sheets("5"), никаких переборов.
А пройдет так: sheets(НомерЛиста) ?? +использовать range("A1") наверно не могу, т.к. не знаю количество строк. Или можно написать range("A1:G65000") ??
Ребят, а можно "для тех кто в танке" написать код? Есть таблица:
Номер
Знач1
Знач2
Знач3
5
142
173
292
44
567
345
789
Мне нужно найти лист с номером как в колонке "Номер" таблицы значений (он может быть любой). (Лист с именем точно существует) И в этот лист внести изменения поячеично, т.е ЛистАЗК.Cells(1, "B" ;) .Value = ТЗ.Знач1; ЛистАЗК.Cells(1, "С" ;) .Value = ТЗ.Знач2; ЛистАЗК.Cells(1, "D" ;) .Value = ТЗ.Знач3;
У нас жара +30, я туплю похоже или не то спрашиваю. Извините