Страницы: 1
RSS
Запускать каждый раз новую процедуру при прохождении цикла
 
Вкратце код выглядит во так:
макрос просматривает файлы в папке, смотрит данные в ячейке, в файлах, если данные верны, то должна запускаться каждый раз разная процедура из списка
Сформировать01
Сформировать02
        Сформировать03
        Сформировать04
        Сформировать05
по кругу:
Код
'3) Извлечение данных из закрытых инвойсов.
    For Each myFile In myFolder.Files
.....
 ' Алкоголь(вообще с воды начанием):
 Case 2202100000# To 2208909900#

         ' работа в инвойсе:
   ЗДЕСЬ НУЖЕН СЧЕТЧИК, ЧТОБЫ ПООЧЕРЕДИ ЗАПУСКАЛ НИЖЕУКАЗАННЫЕ ПРОЦЕДУРЫ.
         Сформировать01
         Сформировать02
         Сформировать03
         Сформировать04
         Сформировать05



' Закрытие инвойса.
        Sh.Parent.Close savechanges:=False
     Case Else
     Sh.Parent.Close savechanges:=False
    GoTo metka_NextFile
End Select
если пройден один цикл,- запускаем процедуру Сформировать01, если два цикла,- запускаем процедуру Сформировать02 и.т.д.
есть идеи какие-нить?  спасибо.
 
А цикл в цикле не подойдет?
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, да  любой вариант можно,- я там дошел до этого момента, очень хочется, чтобы было красиво. именно с циклом, а так можно заливку смотреть и запускать по-очереди. но циклом дюже хочется.
 
Код
Sub Main()
    Dim i As Byte
    For i = 1 To 2
        Application.Run "'" & ThisWorkbook.Name & "'!Sub_" & i
    Next
End Sub

Sub Sub_1()
    Debug.Print 1
End Sub

Sub Sub_2()
    Debug.Print 2
End Sub
 
в ячейку а4 на активный лист ставится порядковый номер запуска цикла, затем уже смотрим что там, и в зависимости запускается тема(хотя хотелось по=другому, но, как говорится и на безрыбье рак= рыба):
Код
Set Sh = Workbooks.Open(filename:=myFile.Path, ReadOnly:=True).Worksheets("спецификация")
         Windows(ИМЯКНИГИ).Activate
         ' присваиваем номер запуска:
           tan
         If [a4] = 1 Then
          Sh.Activate
         Сформировать01
         Сформировать05
         End If
       
         If [a4] = 2 Then
         Sh.Activate
         Сформировать02
         Сформировать05
         End If
         If [a4] = 3 Then
         Sh.Activate
         Сформировать03
         Сформировать05
         End If
уфффъъъ
в очередной раз неизвестно куда-то пропал код(сохранял же всё...), который делал на работе, как ето достало- начинать всё заново(((((
а работает классно: в последнее время стало много инвойсов, больше двух в каждой декларации, теперь макрос САМ объединяет все нужные инвойсы по всм видам товраов, и не надо по-одному вручную отрывать-закрывать каждый. карочи- сила.  
Изменено: Домкрат - 18.01.2020 22:47:37
 
Цитата
Домкрат написал:
Запускать каждый раз новую процедуру при прохождении цикла
идея мертвая со старта. появляются такие идеи из-за отсутсвия базовых знаний в области программирования
опишете задачу - скорее всего ВСЕ будет обрабатываться ОДНОЙ процедурой
а не 15тыс. Сформировать1, Сформировать2, Сформировать3 .... Сформировать15000 если в цикле 15 тыс шагов
пример и описание задачи, и что-то мне подсказывает (может те несколько первых операторов написанных на Basic 35 лет тому назад, которые выдали желаемый результат), что все будет решено ОДНОЙ процедурой
Изменено: Ігор Гончаренко - 18.01.2020 23:32:34
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко,   вам конечно виднее, только количество инвойсов от етого никак не уменьшится, как и то, что каждый инвойс нужно обрабатывать индивидуально:
каждый инвойс нумеруется по стролбцу А, каждый инвойс должен иметь свою заливку, ну и объединение должно происходить по очереди и по виду товаров, а не как лично Вам хочется.
Изменено: Домкрат - 19.01.2020 07:13:01
 
да ничего лично мне не хочется в этой задаче
было небольшое желание вам помочь, посмотрев файлы-примеры и почитав описание задачи, но ни того ни другого нет и чем тут поможешь, и смысла в тему заглядывать тоже больше нет, оказывается у вас "разные инвойсы"... и эта фраза является файлом-примером и за одно полным описанием задачи.
пару месяцев назад я обработал 19 прайсов от разных поставщиков одной процедурой, обьединяло их то, что все они назывались прайсами, а внутри что угодно: с разными колонками, обьединеными ячейками, с группами товарных позиций, с прайсами на нескольких страницах и т.д. и т.п. просто у всех свое представление о том, как должен выглядеть идеальный прайс и свои завихрения дизайнерских идей по оформлению. были (в основном) стандартные простые прайсы на первом листе в книге, но было с полдесятка полнейшей дичи. тем не менее все стало на свои места чего и вам желаю и удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко,
Код
counter = 1

............
 counter = counter + 1

   MsgBox "обработан инвойс № " & counter 
Цитата
Ігор Гончаренко написал:
и вам желаю и удачи!

без ансабля.
Страницы: 1
Наверх