Новости:

Интересные и полезные статьи по работе с Excel и VBA
можно найти в разделе ХИТРОСТИ

Главное меню

Быстрый ввод времени без двоеточие.

Автор TimBor, 11.05.2020, 16:33:13

« назад - далее »

TimBor

Здравствуйте! Поделитесь, пожалуйста, макросом для ввода времени и преобразования прямо в той же ячейки в виде, например, 13:00. Так, чтобы набирать 1300, а на выходе получалось 13:00. Ну и чтобы это действительно было формат времени, для сумирования с др ячейка и. Спасибо!

boa

Здравствуйте,
да же на такое, надо бы примерчик приложить,
т.к. можно ж просто "13" ввести и тоже получить 13:00, а можно запятой разделить или пробелом, и тоже получить время.
и "в каком месте" вы планируете вводить? или на всем листе? или во всей книге?
Для того, что бы такое осуществить, надо просто понимания как Excel хранит и обрабатывает даты и время и где вы его(время) будете вводить.
Первое, я так понимаю вы не знаете, хотя на просторах интернета множество пояснялок, а второе - ни кто кроме вас не знает. :(
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра


TimBor

Невнятно обрисовал вопрос... Виноват. Поясняю.. У меня таблица в одном столбце я ввожу дату события, например в А1. В В1 мне нужно ввести время. Затем новое событие и в А2 новая или также дата, в В2 новое время. Макродля ввода даты без точек я нашёл, т.е просто набираю в ячейке 100520 и эти цифры в этой же ячейке трансформируются в виде даты 10.05.2020. Мне нужен макрос и для времени, чтобы набирать просто 4 цифры, которые преобразовывались в запись времени. Скажем набрал 1512, тут же получилось, в этой же ячейке 15:12.

boa

Цитата: boa от 11.05.2020, 21:01:29
Здравствуйте,
да же на такое, надо бы примерчик приложить,
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра


TimBor


boa

Согласно примеру, код
Private Sub Worksheet_Change(ByVal Target As Range)
  Application.EnableEvents = False
    If Not Intersect(Target, Range("B6")) Is Nothing Then
      Target.Value = TimeSerial(Left(Target, 2), Right(Target, 2), 0)
    End If
  Application.EnableEvents = True
End Sub

обрабатывается только ячейка В6 и время должно быть введено 4-мя цифрами
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра


TimBor


TimBor


boa

Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра


TimBor

Разобрался в чем дело. Работает.... Но вот такая штука. Ввожу цифры, жму ентер, появляется время. Все хорошо. Если ошибся с цифрами и надо вводить новые, тоже срабатывает. А вот если просто удалить - вылезает сообщение Run-time error 13 Type mismatch. И усе... Приходится перезапускать файл....

boa

#10
Добавьте проверки
Private Sub Worksheet_Change(ByVal Target As Range)
 Application.EnableEvents = False
   If Not Intersect(Target, Range("B6")) Is Nothing Then
     If Len(Target.Value) = 4 Then
       Target.Value = TimeSerial(Left(Target, 2), Right(Target, 2), 0)
     End If
   End If
 Application.EnableEvents = True
End Sub


Цитата: TimBor от 17.05.2020, 00:38:16
Приходится перезапускать файл....
Достаточно в окне Immediate выполнить команду Application.EnableEvents = True
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра


TimBor

Ура, заработало! . Спасибо, только если набираешь больше 10. Например, набираешь 1000, преобразует я в 10:00, а вот если 0900 или 900 или 0215, в е равно пишет 00:00. С форматами по возился, все равно 00:00 получается :-\

boa

Цитата: TimBor от 11.05.2020, 22:49:24
чтобы набирать просто 4 цифры
Цитата: TimBor от 23.05.2020, 11:22:24или 900
Когда в Excel встроят интелект, он вам сам ответит "почему?"
а покаместь скажу, что вариантов человеческих ошибок и заблуждений великое множество.
особенно когда вопрос касается времени и пространства ;)
следуйте правилам ввода "по умолчанию" и не будете знать проблем.
Ничто не обходится нам так дешево и не ценится так дорого, как вежливость...  Мигель Сервантес де Сааведра


Яндекс.Метрика Рейтинг@Mail.ru