Здравствуйте форумчане и гости форума. Нужно доработать макрос:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Intersect(Target, Range("A2,C2")) Is Nothing Then If Target.NumberFormat = "m/d/yyyy" Then Target.NumberFormat = "General" End If x_ = Target If Len(x_) = 5 Or Len(x_) = 6 Then If IsDate(Format(x_, "00\/00\/00")) Then If Mid(Format(x_, "00\/00\/00"), 4, 2) > 12 Then GoTo error_ x_ = CDate(Format(x_, "00\/00\/00")) Else: GoTo error_ End If ElseIf Len(x_) = 7 Or Len(x_) = 8 Then If IsDate(Format(x_, "00\/00\/0000")) Then If Mid(Format(x_, "00\/00\/0000"), 4, 2) > 12 Then GoTo error_ x_ = CDate(Format(x_, "00\/00\/0000")) Else: GoTo error_ End If Else: GoTo error_ End If Application.EnableEvents = False Target = x_ Application.EnableEvents = True End If Exit Sub error_: Application.EnableEvents = False Target = Empty Application.EnableEvents = True End Sub
[/vba]
1. При открытии файла, в ячейках А2 и С2 — устанавливается текущая дата. 2. После ручного изменения даты в ячейке A2 — в ячейке C2 устанавливается дата такая же, как в A2 с возможностью ручного изменения. [offtop]надеюсь, что описал понятно[/offtop]
Здравствуйте форумчане и гости форума. Нужно доработать макрос:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Intersect(Target, Range("A2,C2")) Is Nothing Then If Target.NumberFormat = "m/d/yyyy" Then Target.NumberFormat = "General" End If x_ = Target If Len(x_) = 5 Or Len(x_) = 6 Then If IsDate(Format(x_, "00\/00\/00")) Then If Mid(Format(x_, "00\/00\/00"), 4, 2) > 12 Then GoTo error_ x_ = CDate(Format(x_, "00\/00\/00")) Else: GoTo error_ End If ElseIf Len(x_) = 7 Or Len(x_) = 8 Then If IsDate(Format(x_, "00\/00\/0000")) Then If Mid(Format(x_, "00\/00\/0000"), 4, 2) > 12 Then GoTo error_ x_ = CDate(Format(x_, "00\/00\/0000")) Else: GoTo error_ End If Else: GoTo error_ End If Application.EnableEvents = False Target = x_ Application.EnableEvents = True End If Exit Sub error_: Application.EnableEvents = False Target = Empty Application.EnableEvents = True End Sub
[/vba]
1. При открытии файла, в ячейках А2 и С2 — устанавливается текущая дата. 2. После ручного изменения даты в ячейке A2 — в ячейке C2 устанавливается дата такая же, как в A2 с возможностью ручного изменения. [offtop]надеюсь, что описал понятно[/offtop]DrMini
i691198, спасибо. Вы поняли всё правильно. Но... Вы сделали это всё с нуля, а в моём варианте был именно ввод даты в ячейку без разделителей. Набираем 050323 получаем 05.03.2023 У нас диспетчера то и дело меняются и Excel видят, как правило впервые. И ещё — при открытии файла если была сохранённая дата то она и остаётся. А надо, что бы при открытии файла дата была всегда, как с функцией
i691198, спасибо. Вы поняли всё правильно. Но... Вы сделали это всё с нуля, а в моём варианте был именно ввод даты в ячейку без разделителей. Набираем 050323 получаем 05.03.2023 У нас диспетчера то и дело меняются и Excel видят, как правило впервые. И ещё — при открытии файла если была сохранённая дата то она и остаётся. А надо, что бы при открытии файла дата была всегда, как с функцией
И ещё — при открытии файла если была сохранённая дата то она и остаётся. А надо, что бы при открытии файла дата была всегда, как с функцией [Перевод / Translate] =СЕГОДНЯ()
И как это можно понять? Ориентируюсь на ваш пример - при закрытии файла вчера дата была сохранена, а при открытии его сегодня она изменяется на текущую. Здесь явное логическое противоречие - одно условие исключает другое.
в моём варианте был именно ввод даты в ячейку без разделителей. Набираем 050323 получаем 05.03.2023 У нас диспетчера то и дело меняются и Excel видят, как правило впервые.
Да зачем же это нужно. Эксель хорошо работает с датами, даже излишне хорошо. К примеру, если нужно ввести сегодняшнюю дату, то это можно можно сделать так: - 5.3 - 5/3 - 5.3.23 - 5/3/23 - 5 мар - 5 март 23 И это далеко не все варианты. Если ваши диспетчеры не знают как вводить даты и умеют нажимать только на цифры, то я вам могу только посочувствовать.
И ещё — при открытии файла если была сохранённая дата то она и остаётся. А надо, что бы при открытии файла дата была всегда, как с функцией [Перевод / Translate] =СЕГОДНЯ()
И как это можно понять? Ориентируюсь на ваш пример - при закрытии файла вчера дата была сохранена, а при открытии его сегодня она изменяется на текущую. Здесь явное логическое противоречие - одно условие исключает другое.
в моём варианте был именно ввод даты в ячейку без разделителей. Набираем 050323 получаем 05.03.2023 У нас диспетчера то и дело меняются и Excel видят, как правило впервые.
Да зачем же это нужно. Эксель хорошо работает с датами, даже излишне хорошо. К примеру, если нужно ввести сегодняшнюю дату, то это можно можно сделать так: - 5.3 - 5/3 - 5.3.23 - 5/3/23 - 5 мар - 5 март 23 И это далеко не все варианты. Если ваши диспетчеры не знают как вводить даты и умеют нажимать только на цифры, то я вам могу только посочувствовать. i691198
Каждое утро диспетчер открывает файл и начинает заполнять путевые листы. Когда дата стоит уже сегодняшняя то диспетчеру не надо вводить её в двух ячейках (Дата выезда и Дата заезда в гараж). Это будет ускорение в работе. Изменять дату во второй ячейке нужно редко. Только когда путевой лист выписывают на два и более дней.
Кого можно найти за минималку? Текучка, как раньше в McDonald’s. До моего прихода на это предприятие всё вообще велось в тетрадке. Путевые листы закупаются в типографии и заполняются от руки ручкой. Сейчас выбил принтер и хочу максимально всё им упростить. А заполнение дат и времени - поверьте это не самое страшное. Ещё раз спасибо за ответ. Если ни, кто не поможет (в чём я сомневаюсь) будут заполнять по моему варианту.
Каждое утро диспетчер открывает файл и начинает заполнять путевые листы. Когда дата стоит уже сегодняшняя то диспетчеру не надо вводить её в двух ячейках (Дата выезда и Дата заезда в гараж). Это будет ускорение в работе. Изменять дату во второй ячейке нужно редко. Только когда путевой лист выписывают на два и более дней.
Кого можно найти за минималку? Текучка, как раньше в McDonald’s. До моего прихода на это предприятие всё вообще велось в тетрадке. Путевые листы закупаются в типографии и заполняются от руки ручкой. Сейчас выбил принтер и хочу максимально всё им упростить. А заполнение дат и времени - поверьте это не самое страшное. Ещё раз спасибо за ответ. Если ни, кто не поможет (в чём я сомневаюсь) будут заполнять по моему варианту.DrMini
Сообщение отредактировал DrMini - Воскресенье, 05.03.2023, 17:26
DrMini, я конечно хз, наверно не понял))). но не проще написать в ячейке дату выезда=сегодня(), а в дате возвращения писать =сегодня()+1. т.е будет дата завтра или делать примерно как.. прикрепляю
DrMini, я конечно хз, наверно не понял))). но не проще написать в ячейке дату выезда=сегодня(), а в дате возвращения писать =сегодня()+1. т.е будет дата завтра или делать примерно как.. прикрепляюcmivadwot
Изменять дату во второй ячейке нужно редко. Только когда путевой лист выписывают на два и более дней.
У нас в основном выезды только для работы по городу. Междугородние (на несколько дней) бывают крайне редко но бывают. Путевые листы выписывают каждый день не только на легковые автомобили но и на спецтехнику, грузовые и трактора. Ваш вариант с умной таблицей и VBA понравился, но если учесть, что каждый день будут не менее трёх "видов" накладных, а в некоторых "видах" до восьми транспортных средств. Пока мне кажется геморройно. Пока остаюсь на своём варианте.
Изменять дату во второй ячейке нужно редко. Только когда путевой лист выписывают на два и более дней.
У нас в основном выезды только для работы по городу. Междугородние (на несколько дней) бывают крайне редко но бывают. Путевые листы выписывают каждый день не только на легковые автомобили но и на спецтехнику, грузовые и трактора. Ваш вариант с умной таблицей и VBA понравился, но если учесть, что каждый день будут не менее трёх "видов" накладных, а в некоторых "видах" до восьми транспортных средств. Пока мне кажется геморройно. Пока остаюсь на своём варианте.DrMini
DrMini, что мешает, рядом вне зоны печати писать количество дней 0. Или использовать таблицу на каждый вид техники с вариационными данными в одну строку, а бланк путевого листа заполнялся по данным из строки....при определенном условии....
DrMini, что мешает, рядом вне зоны печати писать количество дней 0. Или использовать таблицу на каждый вид техники с вариационными данными в одну строку, а бланк путевого листа заполнялся по данным из строки....при определенном условии....cmivadwot
Или использовать таблицу на каждый вид техники с вариационными данными в одну строку, а бланк путевого листа заполнялся по данным из строки....при определенном условии...
Или использовать таблицу на каждый вид техники с вариационными данными в одну строку, а бланк путевого листа заполнялся по данным из строки....при определенном условии...