Для ввода значений времени специализированный элемент управления не предлагает пользователю гораздо большего удобства, чем прямой ввод значений времени в текстовое поле, привязанное к полю даты / времени, IMO.
В 13:30 она может просто ввести 1: 30p, и она будет принята соответствующим образом.Она также может ввести это время как 13:30, если она предпочитает.
Если ваша проблема заключается в том, что пользователь не может ввести (ненулевое) значение даты вместе со временем, вы можете отменить часть даты в текстовом поле после события обновления.Пользователи стремятся поймать очень быстро, когда отбрасываются части даты вводимых ими значений.
Private Sub txtTimeOnly_AfterUpdate()
Me.txtTimeOnly = TimeValue(Me.txtTimeOnly)
End Sub
Фактически это преобразует часть даты в нулевой день VBA, # 1899/12/30 #.Но это лучшее, на что вы можете надеяться хранить значение «только время», потому что значения Date \ Time всегда включают дату как в VBA, так и в типе поля базы данных.
Если вы хотите больше уверенности, что в поле будут храниться значения времени (с датой # 1899/12/30 #), вы можете установить правило проверки для таблицы:
IsNull([time_only_field]) Or DateValue([time_only_field])=CDate("1899/12/30")
Если вы все еще чувствуете, что вам нужен элемент управления для выбора времени, поищите в Интернете, чтобы узнать, создал ли кто-нибудь его.Я бы избежал элемента управления ActiveX, потому что они в конечном итоге создают проблемы с версиями.
Или, я полагаю, вы можете создать свой собственный выбор времени с помощью комбинированных блоков: один на несколько часов;один на минуты;и, если нужно, один на несколько секунд.В комбо после событий обновления создайте значение времени из этих частей и сохраните их в элементе управления, привязанном к полю time_only_.Этот элемент управления не должен редактироваться пользователем, но его отображение позволит им увидеть завершенное значение.