Метод рандомизации / Rnd
После Randomize
, Rnd
генерирует псевдослучайное десятичное число от нуля до единицы при каждом вызове.Если ваши значения времени являются значениями полного времени (например, 23:59:45), тогда преобразуйте строки, возвращаемые полями ввода, используя преобразование строки в двойное значение TimeValue и используйте некоторую математику, чтобы заставить значения Rnd внутри начала и концаtimes.
Private Sub Generate_Data_Button_Click()
Dim emptyRow As Long, tstart As Double, tend As Double
'convert string times from input to true time as double
tstart = TimeValue(start_time_textbox.Value)
tend = TimeValue(end_time_textbox.Value)
Randomize
'Make Data Active
With Worksheets("Data")
'Determine emptyRow in COLUMN D
emptyRow = .Cells(.Rows.Count, "D").End(xlUp).Row + 1
'Transfer information to template
.Cells(emptyRow, "D").Value = (tend - tstart) * Rnd() + tstart
'Format cell on template
.Cells(emptyRow, "D").NumberFormat = "hh:mm:ss"
End With
End Sub
Метод RandBetween
Чтобы использовать функцию Randbetween рабочего листа, необходимо преобразовать время начала и окончания в длинные целые числа, представляющие количество секунд с моментаполночь, затем перемешать между ними.Возьмите результат и преобразуйте его во временное значение, погрузившись на количество секунд в дне.
Private Sub Generate_Data_Button_Click2()
Dim emptyRow As Long, tstart As Long, tend As Long, siad As Long
siad = 86400 'seconds in a day
'convert string times from input to seconds in a day as Long Integer
tstart = TimeValue(start_time_textbox.Value) * siad
tend = TimeValue(end_time_textbox.Value) * siad
'Make Data Active
With Worksheets("Data")
'Determine emptyRow in COLUMN D
emptyRow = .Cells(.Rows.Count, "D").End(xlUp).Row + 1
'Transfer information to template
.Cells(emptyRow, "D").Value = Application.RandBetween(tstart, tend) / siad
'Format cell on template
.Cells(emptyRow, "D").NumberFormat = "hh:mm:ss"
End With
End Sub