Я пытаюсь вернуть значение времени в виде строки без «:» или «AM/PM». Я не хочу, чтобы значение возвращалось в виде десятичной дроби. Итак, если сейчас 19:53, я хочу, чтобы код возвращал «195300».
Немного о коде, в формуле в ячейке D6 я извлекаю данные из листа Excel и форматирую их в идентификатор.
Позже пользователям стало необходимо скопировать и вставить этот идентификатор. Но они не смогли скопировать значение в D6, не получив формулу (сейчас не интересно, есть ли для этого лучшее решение). Поэтому я запускаю макрос при нажатии кнопки, макрос проверяет, не пусты ли ячейки, входящие в формулу для создания идентификатора. Если они не пусты, я помещаю значение из D6 в K99, чтобы пользователь мог скопировать его.
Именно в этом разделе кода я хочу взять текущее время и отформатировать его как «ЧЧММСС» без «:» или «AM/PM». Сейчас я хочу сохранить его в случайной ячейке, V128, и позже добавлю это к своему идентификатору.
Private Sub Worksheet_Change(ByVal mnTarget As Range)
'other code that isn't relevent here
For Each Cell In Range("G18,E27,E28, E40, E42")
If Cell.Value <> "" Then
Range("K99").Value = Range("D6").Value
Else
Range("K99").Value = ""
End If
Next Cell
'test point to show the current time
'MsgBox Time
Dim var As String
var = Time
tmp = Replace(var, ":", "")
Range("V128").Value = var
End Sub
Это по-прежнему возвращает время в формате двоеточий и AM/PM. Пожалуйста помогите, я не могу найти ничего в Интернете для этого решения.
Я также пробовал использовать формулы на листе, поэтому, если «19:53:00» находится в ячейке V128, в соседней ячейке я попробовал =SUBSTITUTE(V128,":",""), но это вернуло бессмысленное значение. .
Range("V128").Value = Format(Time, "hhmmss")
должен делать то, что хочешь.
С помощью функций Excel в формуле вы можете добиться:
Ячейка представляет собой дату с указанием дня и времени (например, результат функции СЕЙЧАС()).
=TEXT(HOUR(MOD(V128,1)),"00")&TEXT(MINUTE(MOD(V128,1)),"00")&TEXT(SECOND(MOD(V128,1)),"00")
Функция MOD возвращает долю даты (это время).
номера функции ТЕКСТ всегда имеют длину в две цифры.
Если ячейка содержит только время, функция MOD не требуется.
=TEXT(HOUR(V128),"00")&TEXT(MINUTE(V128),"00")&TEXT(SECOND(V128),"00")
Большое спасибо за вашу помощь, это сработало! Мне удалось найти другое решение в VBA, которое сработало, но это тоже сработало, большое спасибо за ваш вклад. Я бы проголосовал за, если бы мог, но у меня недостаточно репутации
АГА! Огромное вам спасибо, я пробовал это раньше, и это не сработало, но теперь я понимаю, что это связано с тем, что сам формат ячейки, вероятно, был изменен во времени из-за неправильных способов, которыми я пытался это сделать раньше. Только что попробовал это на чистой, нетронутой камере, и все сработало как часы. Спасибо!