VBA Hjælp Random med log
Hej,Jeg har nedenstående script som jeg ønsker skrevet en smule om så funktionen er:
en randomgenerator i heltal med en log over fx 15 seneste tal hvis tallet trækken inden for de 15, trækkes automatisk nyt tal.
denne funktion skal deaktiveres hvis intervallet mellem første og sidste tal i randommen er mindre end minimum gentagelses interval.
det giver følgende variabler:
Mindste tal
Højeste tal
minimums interval.
samt output celle.
nedenfor ses nuværende kode.
Public Sub TilfældigTal()
Dim A As Long, AntalTal As Long, X As Long
Randomize ' starter randomize generatoren
Dim Tal() As Variant
AntalTal = 15 'der er her plads til 3 værdier 0 bruges ikke,
'hvis der skal laves flere værdier, rettes 3 tallet
Mindste = [AGFH!B4] 'Mindste i celle I6 og
Storste = [AGFH!C4] 'Storste i celle G6
If (Mindste = Storste) Or (Mindste > Storste) Then
MsgBox "Mindste og største må ikke have samme værdi og" & vbCrLf & "Største skal altid være større end mindste"
End If
Decimaler = 0 'J6 angiver antallet af decimaler
ReDim Tal(AntalTal, 1)
For X = 0 To 1 ' to kolonner posigtive tal i første (0) og negative i den anden(1)
A = 0
Do
A = A + 1
Tal(A, X) = Round((Rnd() * (Storste - Mindste + 1) + Mindste), Decimaler)
If X = 1 Then Tal(A, X) = Tal(A, X) * -1
For I = 0 To A - 1
If Tal(I, X) = Tal(A, X) Then A = A - 1 ' hvis tallet er brugt, laves en ny
Next
If Tal(I, 0) + Tal(I, 1) < 0 Then A = A - 1 'Tjekker om resultatet er mindre end 0, hvis sand laves en ny
Loop Until A = AntalTal
Next
'de fundne værdier skrives til cellerne
[AGFH!B7] = Tal(1, 0): [AGFH!C7] = Tal(1, 1)
[AGFH!B8] = Tal(2, 0): [AGFH!C8] = Tal(2, 1)
[AGFH!B9] = Tal(3, 0): [AGFH!C9] = Tal(3, 1)
[AGFH!B10] = Tal(4, 0): [AGFH!C10] = Tal(4, 1)
[AGFH!B11] = Tal(5, 0): [AGFH!C11] = Tal(5, 1)
[AGFH!B12] = Tal(6, 0): [AGFH!C12] = Tal(6, 1)
[AGFH!B13] = Tal(7, 0): [AGFH!C13] = Tal(7, 1)
[AGFH!B14] = Tal(8, 0): [AGFH!C14] = Tal(8, 1)
[AGFH!B15] = Tal(9, 0): [AGFH!C15] = Tal(9, 1)
[AGFH!B16] = Tal(10, 0): [AGFH!C16] = Tal(10, 1)
[AGFH!B17] = Tal(11, 0): [AGFH!C17] = Tal(11, 1)
[AGFH!B18] = Tal(12, 0): [AGFH!C18] = Tal(12, 1)
[AGFH!B19] = Tal(13, 0): [AGFH!C19] = Tal(13, 1)
[AGFH!B20] = Tal(14, 0): [AGFH!C20] = Tal(14, 1)
[AGFH!B21] = Tal(15, 0): [AGFH!C21] = Tal(15, 1)
End Sub