Не получается. В итоге получился такой код , но не работает
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("a3:a400000,b3:b4000,q3:q4000,h3:h4000,i3:i4000,j3:j4000,k3:k4000,l3:l4000,m3:m4000"), Target) Is Nothing Then
If Target.Column = 1 Then Target.Offset(0, 1).Select
'If Not Intersect(Range("a3:a4000"), Target) Is Nothing Then
'Worksheet_Change
'If Target.Column = 2 Then Target.Offset(0, 14).Select
'ActiveCell.FormulaR1C1 = Now
With Target
If .Column = 2 Then
Cells(.Row, 16) = Now
.Offset(0, 6).Select
End If
'If Target.Column = 2 Then Target.Offset(0, 6).Select
'If Target.Column = 8 Then Target.Offset(0, 1).Select
If .Column = 8 Then
Cells(.Row, 17) = Now
.Offset(0, 1).Select
End If
If Target.Column = 9 Then Target.Offset(0, 1).Select
If Target.Column = 10 Then Target.Offset(0, 1).Select
If Target.Column = 11 Then Target.Offset(0, 1).Select
If Target.Column = 12 Then Target.Offset(0, 1).Select
If Target.Column = 13 Then Target.Offset(1, -12).Select
'End If
'With Target
' If .Column <> 2 And .Column <> 13 Then Exit Sub
' If .Column = 2 Then cl = 17 Else cl = 18
' Cells(.Row, cl) = Now
' Cells(.Row, 8).Select
End With
End Sub
Теперь время заносится, но нарушился алгоритм внесения данных в ячейки. Он прописан для того, чтобы пользователь не пользовался мышкой и клавиатурой, а только сканером ш/к. Мне необходимо , чтобы второе время проставлялось после выполнения вот этой части кода:
Код
If Target.Column = 8 Then Target.Offset(0, 1).Select
В этом блоке прописан алгоритм перемещения по ячейкам(в каждую ячейку сканером считывается штрихкод). Сканер штрихкола после считывания данных эмулирует нажатие клавиши Enter.
Не работает. Время не заносится. Изменил конечные столбцы на 16 и 17 соответственно.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("a3:a400000,b3:b4000,q3:q4000,h3:h4000,i3:i4000,j3:j4000,k3:k4000,l3:l4000,m3:m4000"), Target) Is Nothing Then
If Target.Column = 1 Then Target.Offset(0, 1).Select
'If Not Intersect(Range("a3:a4000"), Target) Is Nothing Then
'Worksheet_Change
'If Target.Column = 2 Then Target.Offset(0, 14).Select
'ActiveCell.FormulaR1C1 = Now
If Target.Column = 2 Then Target.Offset(0, 6).Select
If Target.Column = 8 Then Target.Offset(0, 1).Select
If Target.Column = 9 Then Target.Offset(0, 1).Select
If Target.Column = 10 Then Target.Offset(0, 1).Select
If Target.Column = 11 Then Target.Offset(0, 1).Select
If Target.Column = 12 Then Target.Offset(0, 1).Select
If Target.Column = 13 Then Target.Offset(1, -12).Select
End If
With Target
If .Column <> 2 Or .Column <> 13 Then Exit Sub
If .Column = 2 Then cl = 16 Else cl = 17
Cells(.Row, cl) = Now
Cells(.Row, 8).Select
End With
End Sub
Sanja, добавил. теперь в столбец 17 вставляется значение формулы NOW( что и требуется). Попробовал по аналогии добавить такой же кусок кода, чтобы при изменении в ячейке столбца 13 проставлялось значение функции NOW в ячейку столбца 18, не работает.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("a3:a400000,b3:b4000,q3:q4000,h3:h4000,i3:i4000,j3:j4000,k3:k4000,l3:l4000,m3:m4000"), Target) Is Nothing Then
If Target.Column = 1 Then Target.Offset(0, 1).Select
'If Not Intersect(Range("a3:a4000"), Target) Is Nothing Then
'Worksheet_Change
'If Target.Column = 2 Then Target.Offset(0, 14).Select
'ActiveCell.FormulaR1C1 = Now
If Target.Column = 2 Then Target.Offset(0, 6).Select
If Target.Column = 8 Then Target.Offset(0, 1).Select
If Target.Column = 9 Then Target.Offset(0, 1).Select
If Target.Column = 10 Then Target.Offset(0, 1).Select
If Target.Column = 11 Then Target.Offset(0, 1).Select
If Target.Column = 12 Then Target.Offset(0, 1).Select
If Target.Column = 13 Then Target.Offset(1, -12).Select
End If
With Target
If .Column <> 2 Then Exit Sub
Cells(.Row, 17) = Now
Cells(.Row, 8).Select
End With
With Target If .Column <> 13 Then Exit Sub Cells(.Row, 18) = Now Cells(.Row, 1).Select End With
End Sub
Доброго времени суток. Уважаемые, написал макродиректором нижеуказанный макрос. не получается програмно внести текущую время и дату в ячейку столбца17 после внесения изменений в ячейку столбца 2 и вернуться затем в ячейку столбца 8.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("a3:a400000,b3:b4000,q3:q4000,h3:h4000,i3:i4000,j3:j4000,k3:k4000,l3:l4000,m3:m4000" , Target) Is Nothing Then
If Target.Column = 1 Then Target.Offset(0, 1).Select
'If Not Intersect(Range("a3:a4000" , Target) Is Nothing Then
'Worksheet_Change
If Target.Column = 2 Then Target.Offset(0, 14).Select
ActiveCell.FormulaR1C1 = Now
If Target.Column = 2 Then Target.Offset(0, 6).Select
If Target.Column = 8 Then Target.Offset(0, 1).Select
If Target.Column = 9 Then Target.Offset(0, 1).Select
If Target.Column = 10 Then Target.Offset(0, 1).Select
If Target.Column = 11 Then Target.Offset(0, 1).Select
If Target.Column = 12 Then Target.Offset(0, 1).Select
If Target.Column = 13 Then Target.Offset(1, -12).Select
End If
End Sub
Разобрался.Сам затупил. В файле изменились данные в столбцах а в коде адресация осталась прежней. Изменил -заработало но недолго. Вывалилась ошибка "Bad filename". Как ни странно, но для кода оказалась непреодолимой комбинация ООО "Двери". Заменил на Двери и все заработало. Так что полет нормальный. Спасибо The Prist.
Добрый день. Все отлично работало до последнего времени но сечас возникла некая проблема. При попытке скопировать фотографии выскакивает сообщение про ошибку . <EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
{quote}{login=vlad67}{date=17.02.2010 08:39}{thema=}{post}Попробуйте скопировать отчёт в буфер обмена в виде рисунка, а затем вставить на страницу в WORD.{/post}{/quote} Вот описание http://www.planetaexcel.ru/forum.php?thread_id=13554
Может быть вам подойдет вариант скопировать таблицу в виде рисунка. Выделяете таблицу , зажимаете Shift , "Правка"-"Копировать рисунок"-"как на экране". Затем вставляем в Word из буфера обмена. После этого делаем с рисунком что нам надо(увеличиваем , вертим и т.д.)
{quote}{login=pygma}{date=16.02.2010 12:52}{thema=Re: }{post}{quote}{login=Dophin}{date=16.02.2010 12:38}{thema=}{post}можно. думаю суммпроизв с "+" Вам может помочь{/post}{/quote}
Существует еще один критерий - скорость обработки данных...Если функция массива окажется "тяжелее", придется вернуться к начальному решению (см. пример)...PS А разве СУММПРОИЗВ позволит складывать по какому-то одному из выбранных критериев? Наверное, в моем случае необходимо создать новую функцию через макрос, в котором я пока не силен?{/post}{/quote}
{quote}{login=lenthik}{date=12.11.2009 02:57}{thema=}{post}Да, Михаил, совершенно верно, "сводится к учету времени прибытия/убытия машины на склад" и со склада. И опыт Ваш правильно подсказывает: раз начали - значит закончат... А какие у Вас есть предложения по поводу учета времени по разгрузке? Может у Вас есть какие-то наработки, исходя из опыта :-) ? Буду благодарна...{/post}{/quote} Что и падтверждает вышесказанное ..."сводится к учету времени прибытия/убытия машины на склад"...
{quote}{login=lenthik}{date=12.11.2009 03:33}{thema=}{post}Михаил, именно с этой элементарной формулы всё и началось... Только много условий, которые описаны были выше (цитирую): "склад работает 7 дней в неделю с 8:10 до 20:40, время разгрузки,"меньше рабочего дня 12.30", не всегда, к сожалению... Как правило, рабочие остаются до полной разгрузки... Есть случаи когда машина пришла в конце рабочего дня и разгружались всю ночь и кусочек нового рабочего дня занимает - возможны. 2) "если машина пришла до начала рабочего дня..." (до 8:10) разгрузка, как правило ждёт начала рабочего дня (считаем с 8:10). А как исключение, действительно, если будет определено заранее, что надо вывести раньше людей - тогда разгрузка начинается до 8:10..." Поэтому и возникли трудности...{/post}{/quote}
Лена я чего то наверное не понимаю. Какие возникли трудноти? Зачем Вам нужен признак отгружали ночью или нет? Вы тупо ставите время начала и окончания отгрузки и в столбце D получаете время затраченное на отгрузку. Проблема в чем?
{quote}{login=The_Prist}{date=12.11.2009 01:15}{thema=Re: }{post}{quote}{login=}{date=12.11.2009 12:27}{thema=}{post}Маленькое дополнение.В пути к файлу должен отсутствовать символ ". В противном случае при использовании вышеуказанного кода вываливается ошибка 52.{/post}{/quote}Ну да, если Вы имеете ввиду путь к файлу, записанный в ячейку.{/post}{/quote} Это я и имел ввиду.
{quote}{login=lenthik}{date=11.11.2009 06:45}{thema=Re: }{post}Можно конечно придумывать суперформулы, а можно просто добавить два столбца и обойтись простейшими формулами
Уважаемый (-ая) ... Конечно, можно не придумывать суперформулы, но представленная Вами формула не работает правильно. Так, например, посмотрите сами - начало разгрузки 25.09.09 19:40-окончание разгрузки 25.09.09 23:40, итоговое время - 4 часа, а по Вашей формуле получается 16:30 часов... :-( Может как-то подправить?{/post}{/quote} Лена создайте формат ячейки в котором часы заключите в квадратные скобки.Примерно так [ч]:мм;@. Время будет считаться корректно.
{quote}{login=lenthik}{date=12.11.2009 01:35}{thema=}{post}Добрый день, Vlad67, мне немного не понятны поставленные Вами даты - почему они двойные и с чем это связано... Может поясните немного.... Буду благодарна. С уважением, Елена{/post}{/quote} Это связано с тем что отгрузка может начаться в один день , а закончится в другой.К примеру начали грузить вчера в 19.00 , проработали до 01.00 сегодня , затем ушли домой. Пришли в 08.10 и закончили отгрузку в 10.10. Итого общее время погрузки будет 8 часов.
Я даже не знаю , как словами выразить ВАМ The Prist , свою благодарность. Только банальная фраза(но она не недостаточна и я знаю это). ОГРОМНОЕ ВАМ СПАСИБО!!! Я не знаю , как без таких людей как Вы , существовал бы мир. Буду пробовать Ваше решение дальше и о результатах сообщу Вам.
Поменял код. Ура-а , после запуска макроса создалась папка C:\backup\Градоплас\01.10.09(почему то не Градопластик),в неё скопировались фотографии. Дальше дело не пошло. В режиме отладки вываливается ошибка "Run time error '76': Patch not found" В строке If Dir("C:\backup\" & sFolder, vbDirectory) = "" Then MkDir "C:\backup\" & sFolder
Все пути в файле примере существуют.Я не просто прибавил к сетевому имя локального диска. Я действительно создал каталог по пути C:\public folders\processes\фото - отгрузки\градопластик\01.10.09, равно как и C:\public folders\processes\фото - отгрузки\Тихонов\01.10.09 и т.д. для всех шести путей прописанных в ячейках. Если я щелкну левой кнопкой мышки на ячейке , откроется папка путь к которой прописан в гиперссылке.В папках для примера находится по 4-е графических файла.Я также создал каталог C:\backup\public folders\processes\фото - отгрузки.Но макрос не выполняет копирование. Ну или незнаю куда он копирует , но в папке c:\backup никакие каталоги не появляются. Может мне надо подключить какие то библиотеки или ещё что нибудь?