![]() |
|
Модераторы: mihanik |
![]()
|
|
| darth |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 6.10.2006 Репутация: нет Всего: нет |
Здравствуйте возник вот такой вопросы есть (небольшая грубо говоря БД) ведется о Excele по заполнению путевых листов!!! В ней есть две ячейки “время\прибытие” и “время \убытие”(формат для этих ячеек ДД.ММ.ГГ ч:мм), и итоговая куда записывается разность этих двух ячеек “время\часов”(формат ячейки ч:мм смысл ячейки сколько времени была занята машина ).Вопрос стал как правильно написать условие ,при котором если машина была занята сутки в рейсе то получается “время\прибытие-“время \убытие то по формуле записывается 0 часов как программно написать чтобы в случае если даты разные и время двух ячеек не совпадает то записала бы время в ячейку “время\часов” 24:00 ! Также написать второе условие, чтобы учитывался обед водителя 1:30 отнимался от полного рабочего времени тоже, если он ушел рейс в 7:00 утра, а приехал в 17:00 не записала лишне 1:30 !!!
Для ячеек “время \убытие” и “время\прибытие” по умолчание генерируется текущая дата (для удобства пользователей), значит после только изменения одной из них ручной корректировкой (наверно при изменении в ячейке “время\прибытие” ), должно срабатывать выше описанное условие какая именно процедура увидит это изменение и активирует условие!!! |
|||
|
||||
| Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: нет Всего: 6 |
В программировании под офис мало понимаю, но чтоб не было нуля в разности, то имеет смысл поставить формат ячейки в "ДД.ММ.ГГ ч:мм". Имхо. А насчет обеда - не слишком внятно изложено.
|
|||
|
||||
| darth |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 6.10.2006 Репутация: нет Всего: нет |
Да вот видишь, хотят, чтоб было время, а не дата и время в ячейке время \убытие(ну чтобы не было много информации, а только нужная то есть только одно только время выводилась в эту ячейку она реально считается разность двух ячеек “время\прибытие” - “время \убытие”).На счет обеда поясняю так как рабочий день 8 часов не надо учитывать обед у нас он 1:30 ну вот и потребовалось написать условие ,которое бы если человек уехал в рейс 8:00 и приехал в 15:00 так получается время работы 7 ,а реально 5:50 ну вот и надо написать условие при котором бы это условии выполнялась то есть программно отнимала еще 1:30. |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: нет Всего: 99 |
Перенесено из VB6.
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| RockClimber |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 848 Регистрация: 5.5.2006 Где: планета 013 в тен туре Репутация: 7 Всего: 15 |
Честно говоря, я ничего не понял. Пишешь в ячейку формулу: "Дата прибытия"-"дата убытия"-"время обеда" (или просто 1:30). Ставишь формат, какой нравится.
-------------------- Хорошо кинутый дятел далеко летит, крепко встревает, долго торчит. |
|||
|
||||
| Izuver |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 352 Регистрация: 13.6.2006 Где: Омск Репутация: 2 Всего: 2 |
1. Используй формулу ЕСЛИ(B1-A1>=1;ТЕКСТ(B1-A1;"дд чч:мм");B1-A1)
2. С какого и до какого времени обед? 3. А это вопче не понятно: "Для ячеек “время \убытие” и “время\прибытие” по умолчание генерируется текущая дата (для удобства пользователей), значит после только изменения одной из них ручной корректировкой (наверно при изменении в ячейке “время\прибытие” ), должно срабатывать выше описанное условие какая именно процедура увидит это изменение и активирует условие!!!" Что значит "генерируется текущая дата" на оба значения "=ТДАТА()"? Это сообщение отредактировал(а) Izuver - 9.10.2006, 01:11 |
|||
|
||||
| darth |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 6.10.2006 Репутация: нет Всего: нет |
Да я решил эти вопросы связанные с расчетом если человек ушел в рейс и был дальше чем обед (чтобы посчитала рабочее время не учитывая обеденное время), или был целые сутки в рейсе обед вот кому если пригодиться :
'Если в рейсе был сутки 24 часа сравниваться даты и выводиться на экран 24:00 в нужном формате If DatePart("d", Target.Offset(0, 3).Value) > DatePart("d", Target.Offset(0, 2).Value) Then Target.Offset(0, 4).Formula = "24:00" Target.Offset(0, 4).NumberFormat = "[h]:mm" Else ' считаем рабочий день учитывая обед если он приехал позже 12:00(сравниваем с ячейкой AM100) то отнимаем 1:30 (время берем от ячейки AS100) If Hour(Target.Offset(0, 3).Value) > Hour(ActiveSheet.Range("AM100")) Then Target.Offset(0, 4).Formula = "=" & Target.Offset(0, 3).Address(False, False) & "-" & Target.Offset(0, 2).Address(False, False) & "-" & ActiveSheet.Range("AS100").Address(False, False) Target.Offset(0, 4).NumberFormat = "[h]:mm" ' ‘ считаем рабочий день после обеда если он приехал позже 13:30(сравниваем с ячейкой AN100 она равна 13:30) If Hour(Target.Offset(0, 2).Value) > Hour(ActiveSheet.Range("AN100")) And Hour(Target.Offset(0, 3).Value) > Hour(ActiveSheet.Range("AN100")) Then Target.Offset(0, 4).Formula = "=" & Target.Offset(0, 3).Address(False, False) & "-" & Target.Offset(0, 2).Address(False, False) Target.Offset(0, 4).NumberFormat = "[h]:mm" Else Вот две вещи которые не решил первое как указать, чтобы программно не сравнивая с написанными( неграмотно может сори), ячейками в которых я указал время (сравниваем с ячейкой AN100 она равна 13:30), а как при видение переменных типа: dim LanchTime LanchTime=#13:30 # If Hour(Target.Offset(0, 2).Value) > Hour(LanchTime) и сравнивать как раз с ней а не писать на 100 ячейке это время, а программа наверно что неправильно пишу не может обработать такое выражение пишет пустое значении в чем то ошибаюсь И вторая проблема как написать процедуру ,чтобы выше описанные эти условия(где считали рабочие день с учетом обеда и послеобеденное время), срабатывали при изменение в ячейке “время/прибытие” после изменения данных? Добавлено @ 13:14
Target.Offset(0, 2).Value = Date Target.Offset(0, 3).Value = Date Генерирует в эти ячейке текущую дату я пока отключил их чтобы условия не ругались такак сама панимаешь лепит 09.10.2006 0:00:00 и уже сравнивать не с чем условия уже нарушаеться!Поэтому и приходиться сначала вести нужную дату и время !!!Вот из-за этого и стал вопрос написать процедуру котрая как раз работала при изменение одной из ячеек правильнее последней то есть время\прибытие! |
|||
|
||||
| Cyric |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 27.4.2006 Где: Россия, г. Казань . Репутация: 3 Всего: 3 |
Большую часть написанного не понял.
По поводу
Вам нужно обрабатывать событие изменения ячейки, при возникновении этого события вызывается метод
В этом методе вы проверяя значения Target.Row и Target.Column можете определить были ли изменения осуществлены в нужной вам ячейке и в этом случае производить необходимые действия. |
||||
|
|||||
| darth |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 6.10.2006 Репутация: нет Всего: нет |
Спасибо точно этот метод Private Sub Worksheet_Change(ByVal Target As Range) все получилось! Я только не смог избавиться от записей в ячейке на листе (та как ниже код правильно программой не воспрнимаеться пришлось создать в пустом дальней ячейке на листе я выбрал AM100 написал значение 13:30 и присвоил формат Ч:мм , на не ее я сылаюсь и сравниваю время по условию у меня это записано так If Hour(Target.Offset(0, 3).Value) > Hour(ActiveSheet.Range("AM100")) Then А вот как записать это значения времени не присваивая ее ячейке на листе,а присвоить ее переменой и сравнить програмно я думал ,что так задам значения dim timelunch timelunch=#13:30# но косяки иду самого начала обрабатывет эту строку как timelunch=#1:30 pm# If Hour(Target.Offset(0, 3).Value) > Hour(timelunch) Then тут пишет что переменная timelunch пустая ,но она ведь не пустая там задано время?! |
||||||
|
|||||||
![]()
|
| Правила форума "Программирование, связанное с MS Office" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще!
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Программирование, связанное с MS Office | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |