Всем доброго времени суток. Подобные темы уже проскальзывали на форуме, но как называются я не помню, а через поиск по ключевым словам не нашел. Задача: 1. При выборе ячеек столбцов O, P, Q появляется календарь и можно выбрать дату и время. Такой макрос есть в "Готовых решениях", но он только для даты. Время там не выберешь 2. В ячейках столбцов от Х до АВ должно появляться время/дата та, когда были произведены изменения в столбце В. Причем, в зависимости от выбора из выпадающего списка ячеек столбца В, время/дата должны заноситься в соответствующую ячейку соответствующей строки диапазона от Х до АВ. Например. в ячейке В10 из выпадающего списка выбираем "В работе". Происходит это в 14:32 31.09.11. Значит в строке Y10 появляется запись: 14:32 31.09.11. Затем в 11:17 02.11.11 в ячейке В10 ставим "Выполнен". Значит в ячейке Z10 появляется запись: 11:17 02.11.11 и т.д.
Всем доброго времени суток. Подобные темы уже проскальзывали на форуме, но как называются я не помню, а через поиск по ключевым словам не нашел. Задача: 1. При выборе ячеек столбцов O, P, Q появляется календарь и можно выбрать дату и время. Такой макрос есть в "Готовых решениях", но он только для даты. Время там не выберешь 2. В ячейках столбцов от Х до АВ должно появляться время/дата та, когда были произведены изменения в столбце В. Причем, в зависимости от выбора из выпадающего списка ячеек столбца В, время/дата должны заноситься в соответствующую ячейку соответствующей строки диапазона от Х до АВ. Например. в ячейке В10 из выпадающего списка выбираем "В работе". Происходит это в 14:32 31.09.11. Значит в строке Y10 появляется запись: 14:32 31.09.11. Затем в 11:17 02.11.11 в ячейке В10 ставим "Выполнен". Значит в ячейке Z10 появляется запись: 11:17 02.11.11 и т.д.light26
Соответствие в файле еще то! В списке 7 позиций, столбцов - 5. Порядок позиций в списке один, порядок столбцов другой. А ведь эксперт! Для "зарегистрировано" развернул дату и время. Если есть желание - по образцу!
Соответствие в файле еще то! В списке 7 позиций, столбцов - 5. Порядок позиций в списке один, порядок столбцов другой. А ведь эксперт! Для "зарегистрировано" развернул дату и время. Если есть желание - по образцу! RAN
Все там правильно. Специфика такого построения таблицы обусловлена требованиями отчетности. А как насчет календаря? Не, я конечно и за это премного благодарен, но все-же...
Все там правильно. Специфика такого построения таблицы обусловлена требованиями отчетности. А как насчет календаря? Не, я конечно и за это премного благодарен, но все-же...light26
Я не волшебник. Я только учусь
Сообщение отредактировал light26 - Среда, 31.08.2011, 00:00
Добрый день. У меня похожая ситуация, правда, как я думаю, немного легче. Но я все равно не могу понять, что я делаю не так. Пожалуйста, объясните. Мне необходимо, чтобы при выставлении позиции из списка (ячейка А1:А16) в ячейке (B1:B16) отображалась дата и время выставления самой позиции. Сделал так, как указывалось в предыдущем примере, но, видимо, чего-то не учел. Буду очень благодарен за объяснения.
Добрый день. У меня похожая ситуация, правда, как я думаю, немного легче. Но я все равно не могу понять, что я делаю не так. Пожалуйста, объясните. Мне необходимо, чтобы при выставлении позиции из списка (ячейка А1:А16) в ячейке (B1:B16) отображалась дата и время выставления самой позиции. Сделал так, как указывалось в предыдущем примере, но, видимо, чего-то не учел. Буду очень благодарен за объяснения.nosbuka
If Not Intersect(Target, Columns(1)) Is Nothing Then
[/vba] а вообще Вам достаточно: [vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Columns(1)) Is Nothing Or Target.Count <> 1 Then Exit Sub Target.Offset(, 1) = Format(Now, "hh:nn DD.MM.YYYY") End Sub
[/vba] И больше ничего не надо.
Всего-то циферку поменять: [vba]
Code
If Not Intersect(Target, Columns(1)) Is Nothing Then
[/vba] а вообще Вам достаточно: [vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Columns(1)) Is Nothing Or Target.Count <> 1 Then Exit Sub Target.Offset(, 1) = Format(Now, "hh:nn DD.MM.YYYY") End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count <> 1 Then Exit Sub If Not Intersect(Target, Columns(1)) Is Nothing Then If Len(Target) Then Target(, 2) = Date Else Target(, 2) = "" End If End Sub
[/vba]
Или так
[vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count <> 1 Then Exit Sub If Not Intersect(Target, Columns(1)) Is Nothing Then If Len(Target) Then Target(, 2) = Date Else Target(, 2) = "" End If End Sub
Вынужден снова просить Вашей помощи. Теперь мне необходимо защитить от форматирования ячейки, в которых логируется время. Но если я ставлю на них защиту- каждый раз при срабатывании макроса вылезает ошибка- он же по сути ячейку-то меняет. Можно ли дня него сделать некий обход, чтобы он не реагировал на то, что ячейка защищена и все-равно вносил изменения?
Вынужден снова просить Вашей помощи. Теперь мне необходимо защитить от форматирования ячейки, в которых логируется время. Но если я ставлю на них защиту- каждый раз при срабатывании макроса вылезает ошибка- он же по сути ячейку-то меняет. Можно ли дня него сделать некий обход, чтобы он не реагировал на то, что ячейка защищена и все-равно вносил изменения?nosbuka
1. Для того, чтобы код Sub Protect_for_User_Non_for_VBA() сработал, его надо запустить. Это можно делать и вручную, но лучше поместить код в модуль "ЭтаКнига" на событие Private Sub Workbook_Open(). 2. Поскольку этот код не выполнен, в макросе возникает ошибка, и макрос останавливается. Но к тому времени уже выполнена команда Application.EnableEvents = False, отключающая обработку событий в приложении. Для того, чтобы обработка событий заработала, нужно выполнить код Application.EnableEvents = True. 3. Макрос для light26 выполнял несколько другие функции. В вашем случае нет необходимости отслеживать, что написано в ячейке, т.е. массив и проверка того, что записано в той или иной ячейке не требуется. Возьмите любой из предложенных вам вариантов, и не усложняйте себе жизнь
1. Для того, чтобы код Sub Protect_for_User_Non_for_VBA() сработал, его надо запустить. Это можно делать и вручную, но лучше поместить код в модуль "ЭтаКнига" на событие Private Sub Workbook_Open(). 2. Поскольку этот код не выполнен, в макросе возникает ошибка, и макрос останавливается. Но к тому времени уже выполнена команда Application.EnableEvents = False, отключающая обработку событий в приложении. Для того, чтобы обработка событий заработала, нужно выполнить код Application.EnableEvents = True. 3. Макрос для light26 выполнял несколько другие функции. В вашем случае нет необходимости отслеживать, что написано в ячейке, т.е. массив и проверка того, что записано в той или иной ячейке не требуется. Возьмите любой из предложенных вам вариантов, и не усложняйте себе жизньRAN
Быть или не быть, вот в чем загвоздка!
Сообщение отредактировал RAN - Воскресенье, 25.11.2012, 20:17
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count <> 1 Then Exit Sub If Not Intersect(Target, Columns(1)) Is Nothing Then If Len(Target) Then Target(, 2) = Date Else Target(, 2) = "" End If End Sub
[/vba]
RAN,
Добрый вечер! Нужна помощь! Следуя Вашему примеру попытался сделать автоматическое отображения даты в столбце "B" при изменение параметра списка в столбце "D" в каждой строке, но ничего не получилось! Необходимо чтобы дата менялась на всю возможную длину столбца, т.к. к этому списку постоянно добавляется новая информация. (Моё первое общение с VBA) Заранее спасибо!!
Цитата (RAN)
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count <> 1 Then Exit Sub If Not Intersect(Target, Columns(1)) Is Nothing Then If Len(Target) Then Target(, 2) = Date Else Target(, 2) = "" End If End Sub
[/vba]
RAN,
Добрый вечер! Нужна помощь! Следуя Вашему примеру попытался сделать автоматическое отображения даты в столбце "B" при изменение параметра списка в столбце "D" в каждой строке, но ничего не получилось! Необходимо чтобы дата менялась на всю возможную длину столбца, т.к. к этому списку постоянно добавляется новая информация. (Моё первое общение с VBA) Заранее спасибо!!vovin_fm
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count <> 1 Then Exit Sub If Not Intersect(Target, Columns(4)) Is Nothing Then If Len(Target) Then Target.Offset(, -2) = Date Else Target.Offset(, -2) = "" End If End Sub
[/vba]
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count <> 1 Then Exit Sub If Not Intersect(Target, Columns(4)) Is Nothing Then If Len(Target) Then Target.Offset(, -2) = Date Else Target.Offset(, -2) = "" End If End Sub
Привет. Ребят, помоги те пожалуйста, я в VBA совсем не алё, пользуюсь готовыми решениями, подгоняя их по своим требованиям. Способ о котором идет речь в этой ветке, подходит к моим требованиям, но разобраться с ним не могу никак, голову уже сломал.
Суть: - При смене статуса (оранж. поле) из выпадающего списка, хочу чтобы ставилось время смены статуса в соответствующем поле. - Та же ситуация с Объектами (синее поле), при выборе Объекта, хочу чтобы проставлялось время его выбора в горизонте в соответствующем поле.
Но есть сложность, в файле уже работает один макрос, в первой группировке, фиксирует время прихода при выборе имени сотрудника.
Помогите плиз, вот надо сделать велосипед их этого файл и превратить в конфетку.
Как реализовать проставление даты при выборе статусов из выпадающего списка?
Привет. Ребят, помоги те пожалуйста, я в VBA совсем не алё, пользуюсь готовыми решениями, подгоняя их по своим требованиям. Способ о котором идет речь в этой ветке, подходит к моим требованиям, но разобраться с ним не могу никак, голову уже сломал.
Суть: - При смене статуса (оранж. поле) из выпадающего списка, хочу чтобы ставилось время смены статуса в соответствующем поле. - Та же ситуация с Объектами (синее поле), при выборе Объекта, хочу чтобы проставлялось время его выбора в горизонте в соответствующем поле.
Но есть сложность, в файле уже работает один макрос, в первой группировке, фиксирует время прихода при выборе имени сотрудника.
Помогите плиз, вот надо сделать велосипед их этого файл и превратить в конфетку.
Как реализовать проставление даты при выборе статусов из выпадающего списка?oxid