Excel VBA Seed на основе даты - PullRequest
       38

Excel VBA Seed на основе даты

0 голосов
/ 09 ноября 2018

Я работаю над программой, в которой я использую семя.Это семя должно основываться на дате, поэтому каждый день я получаю новое значение.Использование семени несколько раз в день не должно изменять значение, возвращаемое обратно.

Вот как выглядит мое семя:

Randomize

todayValue = Int (50 * Rnd)

Теперь, как мне основать начальное число на дате?Может быть, есть другой способ получить семя, основанное на дате?

Большое спасибо!

Ответы [ 3 ]

0 голосов
/ 09 ноября 2018

Если вы хотите получать одно и то же число при каждом запуске функции, то это не случайное число, вам нужно создать что-то, что выглядит случайным, например

Sub test()
    Dim todayValue As Long
    todayValue = Date
    todayValue = todayValue + 1538 ' To make it a little random
    MsgBox todayValue
End Sub
0 голосов
/ 27 ноября 2018

Я нашел способ сделать это, я просто сохранил дату и значение дня в определенной ячейке на моем листе. Вот как выглядит мой код:

If MainSheet.Cells(1, 1) = Date Then   
    todayValue = MainSheet.Cells(1, 2)
Else    
    Randomize
    todayValue =  Int(50 * Rnd)
    MainSheet.Cells(1,1) = Date    'saves the date in Sheet
    MainSheet.Cells(1,2) = todayValue    'saves todayValue in Sheet
End If
0 голосов
/ 09 ноября 2018

См. этот пост о получении случайных значений в VBA .

.

Все, что вам нужно сделать, это вызвать функцию Rnd с отрицательным значением перед запуском вашего кода. Для этого вы можете использовать функцию даты. В VBA значениями Date являются просто Longs, представляющие количество дней с некоторой установленной даты в прошлом.

Вот пример того, как вы можете делать то, что вы хотите.

Sub rndSeedTest()
    MsgBox Date & " --> " & CLng(Date)
    Rnd -Date
    MsgBox Rnd & _
        vbNewLine & Rnd & _
        vbNewLine & Rnd & _
        vbNewLine & Rnd & _
        vbNewLine & Rnd
End Sub
...