Страницы: 1
RSS
Ввод в ячейку текущего времени (не обновляемого) по клику мышки, Ввести текущее время системы в ячейку мышкой и закрыть ячейку для любого другого ввода
 
Приветствую всех форумчан!

Возникла такая задача: есть таблица расчета рабочего времени. В ней доступны пользователю только четыре столбца для ввода данных: время прихода на работу, время ухода на обед, время прихода с обеда, время ухода с работы),

Мысль такая: человек кликает мышкой по нужной ячейке, в эту ячейку записывается текущее время системы и ячейка закрывается для любых изменений. То есть ее потом нельзя редактировать (допустим, без снятия защиты листа), в нее нельзя ничего писать руками - только клик мышкой, отображение времени, когда этот клик был сделан и все. По каждой такой ячейке (день и опция) можно  кликнуть только один раз, без коррекции.

Поиском, к сожалению, не нашел ничего похожего, разве что вот это
https://www.planetaexcel.ru/techniques/6/44/. Макрос классный, но это не совсем то, чего хотелось бы...

Спасибо всем неравнодушным :)
Изменено: yuriyk24 - 13.12.2018 19:25:57
 
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count = 1 Then Target = Time
End Sub
Без защиты от изменений
Согласие есть продукт при полном непротивлении сторон
 
Sanja,, спасибо большущее! Эх, как же мне хочется знать и уметь все сразу :)
Изменено: yuriyk24 - 13.12.2018 20:52:04
 
Без защиты все это конечно не имеет смысла. Нашел довольно простое решение на тему одноразового ввода данных, после которого ячейка закрывается, только как подружить диапазоны в макросе с кликом мышки и этой защитой - без понятия, потому что в VBA не знаю практически ничего.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then Target = Time
If Intersect(Target, Range("C2:F35")) Is Nothing Then Exit Sub
Target.Parent.Unprotect "pass"
Target.Locked = True
Target.Parent.Protect "pass"
End Sub
Изменено: yuriyk24 - 14.12.2018 14:19:51
 
yuriyk24, Вы видели, как код оформлен у других? Вот и Вы оформляйте свой: ищите такую кнопку (см. скрин) и исправьте своё сообщение.
По вопросу: рассмотрите вариант, когда ввод в пустую ячейку разрешён, а если в ячейке уже есть данные, то процедура Worksheet_SelectionChange просто на даст активировать эту ячейку.
 
Цитата
Юрий М написал:
yuriyk24 , Вы видели, как код оформлен у других? Вот и Вы оформляйте свой: ищите такую кнопку (см. скрин) и исправьте своё сообщение.
Видел конечно. Исправил. Ну а на тему кода - понять я понимаю, а вот реализацию сделать ирреально. Код ведь не мой, я его вставил и заработало (часть с закрытием ячеек после ввода данных), а вот приладить к этому всему вставку даты по клику мышки мне с моими знаниями пока ирреально  
Изменено: yuriyk24 - 14.12.2018 14:32:56
 
См. вариант. Диапазон поменяйте на нужный Вам:
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("D2:D10")) Is Nothing Then
        If Target = "" Then
            Target = Time
        Else
            Application.EnableEvents = False
            Target.Offset(1, 0).Select
        End If
    End If
    Application.EnableEvents = True
End Sub
 
Цитата
Юрий М написал:
См. вариант. Диапазон поменяйте на нужный Вам:
Посмотрю обязательно и расскажу, как все заработало! :)
Юрий, спасибо Вам большое!!!
 
Работает!! И по одиночному клику, и просто по переводу курсора мышки на ячейку клавишами! Здоровски получилось, спасибо еще раз!

ЗЫ. Сейчас заметил небольшой глюк - если кликнуть мышкой по некоторым ячейкам с уже введенным временем, курсор становится активным и время можно редактировать. Закономерность такая: клик на ячейке, курсор автоматом переходит на ячейку на одну строку ниже и эта ячейка становится доступной для редактирования
Изменено: yuriyk24 - 14.12.2018 14:51:28
 
Цитата
yuriyk24 написал:
курсор автоматом переходит на ячейку на одну строку ниже и эта ячейка становится доступной для редактирования
А почему эта ячейка не должна быть доступна для редактирования, если она пустая?
 
Кажется понял ) Смещайтесь тогда не вниз, а вправо на одну ячейку. Или в заданный столбец.
 
Ясно. Спасибо!
Страницы: 1
Наверх