.Cells(N, 7) = MaxTime(.Range(.Cells(1, 2), .Cells(5, 2))) End With Else N = N + 1
With wsData For i = 1 To 5 ImpDate = CDate(wsImp.Cells(i, 2)) PrevDate = CDate(wsWork.Cells(1, i)) .Cells(N, i + 8) = ImpDate If ImpDate <> PrevDate Then wsWork.Cells(1, i) = ImpDate .Cells(N, i) = ImpDate 'ImpDate òèïà Date If .Cells(N, i) < .Cells(N - 1, 7) Then .Cells(N, i).Interior.ColorIndex = 3 End If End If Next i
.Cells(N, 7) = MaxTime(.Range(.Cells(1, 2), .Cells(5, 2))) End With Else N = N + 1
With wsData For i = 1 To 5 ImpDate = CDate(wsImp.Cells(i, 2)) PrevDate = CDate(wsWork.Cells(1, i)) .Cells(N, i + 8) = ImpDate If ImpDate <> PrevDate Then wsWork.Cells(1, i) = ImpDate .Cells(N, i) = ImpDate 'ImpDate òèïà Date If .Cells(N, i) < .Cells(N - 1, 7) Then .Cells(N, i).Interior.ColorIndex = 3 End If End If Next i
должна быть нажата кнопка Старт формы Form1. Форма вызывается кнопкой с листа Data.
Чтобы сохранить исходные данные нужно закоментить очистку листа Import wsImp.Cells.Clear в обработчике нажатаия кнопки Private Sub tbStart_Click() формы Form1.
Далее, при изменении 3-го столбца листа Import (у меня DDE-импорт, вы можете поменять 1 ячейку вручную), изменяется результат формулы Cells(1,1) листа3 Calculate и вызывается обработчик Private Sub Worksheet_Calculate().
При его втором вызове при N<>0 попадаем в искомую ветку. Она должна выполняться только при получении нового значения, т. е. ImpDate <> PrevDate. Но не тут то было.
Pelena,
должна быть нажата кнопка Старт формы Form1. Форма вызывается кнопкой с листа Data.
Чтобы сохранить исходные данные нужно закоментить очистку листа Import wsImp.Cells.Clear в обработчике нажатаия кнопки Private Sub tbStart_Click() формы Form1.
Далее, при изменении 3-го столбца листа Import (у меня DDE-импорт, вы можете поменять 1 ячейку вручную), изменяется результат формулы Cells(1,1) листа3 Calculate и вызывается обработчик Private Sub Worksheet_Calculate().
При его втором вызове при N<>0 попадаем в искомую ветку. Она должна выполняться только при получении нового значения, т. е. ImpDate <> PrevDate. Но не тут то было.bokr
Сообщение отредактировал bokr - Пятница, 12.07.2019, 15:48
логика работы такая при открытии формы вызывается Init после этого в форме нажимается кнопка Старт без нажатой кнопки Worksheet_Calculate() ничего не обрабатывает,
т.е. Init всегда выполняется до обработки данных в Worksheet_Calculate(). да и переменные ImpDate и PrevDate не присваивались бы без Init().
boa,
логика работы такая при открытии формы вызывается Init после этого в форме нажимается кнопка Старт без нажатой кнопки Worksheet_Calculate() ничего не обрабатывает,
т.е. Init всегда выполняется до обработки данных в Worksheet_Calculate(). да и переменные ImpDate и PrevDate не присваивались бы без Init().bokr
Сообщение отредактировал bokr - Пятница, 12.07.2019, 15:48