Введите военное время в Excel без ":" - PullRequest
0 голосов
/ 04 марта 2020

Я использую этот скрипт, который нашел на форуме Microsoft, чтобы позволить мне вводить военное время без необходимости каждый раз вводить ":". Работает нормально, пока я не добавлю пустую строку или не удалю строку. Тогда я получаю ошибку. Как я могу получить этот код, чтобы игнорировать удаления и добавления в диапазоне, которые не соответствуют ожидаемому формату?

 Private Sub Worksheet_Change(ByVal Target As Range)
 If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
 Dim xHour As String
 Dim xMinute As String
 Dim xWord As String
 Application.EnableEvents = False
 xWord = Format(Target.Value, "0000")
 xHour = Left(xWord, 2)
 xMinute = Right(xWord, 2)
 On Error Resume Next
 Target.Value = TimeValue(xHour & ":" & xMinute)
 On Error Resume Next
 Application.EnableEvents = True
 End Sub

1 Ответ

1 голос
/ 04 марта 2020

Если Target - это диапазон из нескольких ячеек, то Format(Target.Value, "0000") выдаст ошибку несоответствия типов, поскольку Target.Value - это двумерный массив вариантов.

Поэтому отправляйте под залог рано, если Target больше чем одна ячейка, с

If Target.CountLarge > 1 Then Exit Sub

Кроме того, дополнительный On Error Resume Next является посторонним ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...