Включить время с 3-минутными интервалами в присвоении значения ячейки - PullRequest
0 голосов
/ 26 апреля 2020

Итак, у меня есть два рабочих листа: один - «подача данных», а другой - «Запись». В моем листе данных есть текущие данные, которые постоянно обновляются, и в листе данных они сохраняются каждые 3 минуты, все работает отлично, но теперь все, что я хочу, это добавить время каждые 3 минуты, например, если в 9:00 данные 100, тогда я хочу, чтобы это время и мои данные были там, как это, 9:00 100, 9:03 140, 9:06 256 и т. Д. c. Вот мой код, просто хочу показать время, и если вы хотите знать, где я хочу, чтобы время ячейки (A2):

VBA код:

Sub update()

With Sheets("record")
    rw = .Cells(.Rows.Count, 2).End(xlUp).Row + 1

    .Range(.Cells(rw, 2), .Cells(rw, 2)).Value = Sheets("datafeed").Range("B66").Value
    .Range(.Cells(rw, 4), .Cells(rw, 4)).Value = Sheets("datafeed").Range("V66").Value

    .Range(.Cells(rw, 5), .Cells(rw, 5)).Value = Sheets("datafeed").Range("B67").Value
    .Range(.Cells(rw, 7), .Cells(rw, 7)).Value = Sheets("datafeed").Range("V67").Value

    .Range(.Cells(rw, 8), .Cells(rw, 8)).Value = Sheets("datafeed").Range("B68").Value
    .Range(.Cells(rw, 10), .Cells(rw, 10)).Value = Sheets("datafeed").Range("V68").Value

    .Range(.Cells(rw, 11), .Cells(rw, 11)).Value = Sheets("datafeed").Range("B69").Value
    .Range(.Cells(rw, 13), .Cells(rw, 13)).Value = Sheets("datafeed").Range("V69").Value

    .Range(.Cells(rw, 14), .Cells(rw, 14)).Value = Sheets("datafeed").Range("B70").Value
    .Range(.Cells(rw, 16), .Cells(rw, 16)).Value = Sheets("datafeed").Range("V70").Value

    .Range(.Cells(rw, 17), .Cells(rw, 17)).Value = Sheets("datafeed").Range("B71").Value
    .Range(.Cells(rw, 19), .Cells(rw, 19)).Value = Sheets("datafeed").Range("V71").Value

    .Range(.Cells(rw, 20), .Cells(rw, 20)).Value = Sheets("datafeed").Range("B72").Value
    .Range(.Cells(rw, 22), .Cells(rw, 22)).Value = Sheets("datafeed").Range("V72").Value
End With
Application.OnTime Now + TimeSerial(0, 3, 0), "update"   ' run again after 5 minutes
End Sub

1 Ответ

0 голосов
/ 26 апреля 2020

Использование функции Time() вернет системное время в формате "hh:mm:ss AM/PM", используя функцию Format(), мы можем манипулировать форматом вывода функции Time() :

Для формата «чч: мм: сс AM / PM»

Range(.Cells(rw, 2), .Cells(rw, 2)).Value = Time() & " " & Sheets("datafeed").Range("B66").Value

Для формата «чч: мм» (в 24-часовом формате)

Range(.Cells(rw, 2), .Cells(rw, 2)).Value = Format(time(), "hh:mm"))  & " " & Sheets("datafeed").Range("B66").Value

Для формата «чч: мм AM / PM»:

Range(.Cells(rw, 2), .Cells(rw, 2)).Value = Format(time(), "hh:mm AM/PM"))  & " " & Sheets("datafeed").Range("B66").Value

А если вам просто нужно «чч: мм» в 12-часовом формате, попробуйте:

Range(.Cells(rw, 2), .Cells(rw, 2)).Value = Mid(Format(Time(), "hh:mm AM/PM"),1,5) & " " &  Sheets("datafeed").Range("B66").Value

Если выполнение кода может занять некоторое время (более одной минуты), вы можете рассмотреть возможность присвоения значения времени переменной в начале кода и использовать вместо нее:

Dim myTimeValue As String

myTimeValue = Mid(Format(Time(), "hh:mm AM/PM"), 1, 5)

With Sheets("record")
    rw = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
    Range(.Cells(rw, 2), .Cells(rw, 2)).Value = myTimeValue  & " " & Sheets("datafeed").Range("B66").Value
    ...
    'The rest of your code here
End With
...
'The rest of your code here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...