#excel #vba
Вопрос:
В планировщике ресурсов, над которым я работаю, мне нужна помощь с некоторыми циклами. Я могу создать несколько групп по 10 строк. Каждая группа из 10 человек представляет проект. первая строка в каждой группе определяет дату начала, то есть дату начала каждого проекта. Я могу циклически перемещать проекты постепенно вправо, используя DateAdd, пока не исчезнут конфликты ресурсов, представленные переменной = 0. Я не могу понять, как затем перемещать каждую дату начала влево до тех пор, пока одна и та же переменная не превысит 0, а затем переместить ее вперед на 1 ww в DateAdd. Я хотел бы пройтись по всем проектам до тех пор, пока переменная =0 не будет использована в течение наименьшего промежутка времени на временной шкале.
Private Sub CommandButton5_Click() 'Testing ideas for optimiztion 'declare and set variables Dim ws As Worksheet Set ws = Worksheets("Forecasting") Dim short, shortmem, r, projects, newprojs As Long Dim rinc, rstart As Integer Dim oSheet2 As Worksheet Dim oLookFor As Range rstart = 26 rinc = 10 Set oSheet2 = ThisWorkbook.Worksheets("DataTables") Set oLookFor = oSheet2.Range("C5") Dim colf As Variant colf = "F" Set short = ws.Range("B7") projects = ws.Range("B4").Value If projects gt; 2 Then Set sdate = ws.Range("F26") For projects = projects To 1 Step -1 Set sdate = ws.Range(colf amp; rstart) ws.Range(colf amp; rstart) = DateAdd("ww", 0, sdate) ' number after "ww" is number of weeks to advance. rstart = (rstart 10) Range(colf amp; rstart) = DateAdd("ww", 5, sdate) ' number after "ww" is number of weeks to advance project 3. newprojs = projects For newprojs = newprojs To 1 Step -1 Set sdate = ws.Range(colf amp; rstart) rstart = (rstart 10) Range(colf amp; rstart) = DateAdd("ww", 11 * oLookFor, sdate) ' number after "ww" is number of weeks to advance projects 3 - end. Next newprojs Next projects End If End Sub