2015-02-25 3 views
1

Я работаю над макетом VBA, который берет на себя обслуживание транспортных средств и даты MOT со страницы ввода данных, вставляет их в новую строку на другом листе и вычисляет будущие даты обслуживания в течение установленного интервала времени, который я ввел , Все это прекрасно работает, как раз в следующей части, с которой я столкнулся. Затем мне нужно взять эти даты и добавить их в расписание.Рассчитать будущие даты обслуживания

Я попытался установить вложенные Do While петли, но я не могу заставить его работать. Я сделал упрощенный пример того, что я пытаюсь сделать (ссылка ниже).

Красный - введенные вручную данные. Желтый - первый макро-продукт с новой строкой, содержащей скопированные даты с оранжевыми рассчитанными будущими датами. Зеленый - это новая строка, вставленная (где я добрался), но мне нужны символы, вставленные в эту новую строку.

enter image description here

Это основной код у меня есть для ввода даты обслуживания в расписание из базы данных.

x = 1 
y = x + 1 
z = 16 
'my data starts in C6R16 and I have 5 dates (hence to 21) 
Do While z < 21 
'Have a shedule for the whole year so 53. 
    Do While x < 53 
'If functions to locate which week the event is located 
    If Worksheets("Dates Input").Cells(6, z).Value > Worksheets("Maintenance Shedule").Cells(3, x) Then 
     If Worksheets("Dates Input").Cells(6, z).Value < Worksheets("Maintenance Shedule").Cells(3, y) Then 
'Quick location of the lowest empy cell. The others will be full of data from prevous entries. 
       Range("F9:F10").Select 
       Do While Not IsEmpty(ActiveCell) 
        ActiveCell.Offset(1, 0).Select 
       Loop 
'Move my active cell to the correct place 
      ActiveCell.Offset(-1, (3 + x)).Select 
      ActiveCell = "/" 
     Else 
     End If 
'Move to the next set of dates in shedule 
    x = x + 1 
    Loop 
'move to next service date 
z = z + 1 
Loop 

На вершине этого, мне нужно добавить (я предполагаю) в If заявление, чтобы проверить, есть ли MOT (M) и обслуживание (/) в той же самой неделе, так что один не удаляет другие ,

Любые указатели и помощь были бы весьма полезны.

ответ

0

x и z - счетчики по одному. я бы рекомендовал использовать

For x = 1 To 21 
Next 

вместо этого. Однако это не проблема.

Do While Not IsEmpty(~~~~~~) 

на самом деле означает, что делать в то время как клетки пусты.

+0

Do While Not IsEmpty (~~~~) будет продолжать цикл до тех пор, пока не найдет пустую ячейку, которая, по-видимому, является целью OP. Я не уверен, что вы имеете в виду, когда говорите, что это происходит, пока ячейки пусты – OpiesDad

Смежные вопросы