Random tal i et specifikt Range

Tags:    visual-basic

Hej, sad og puslede lidt med at generere lidt random tal osv., da jeg kom til at tænke på hvordan man så indsætter disse i et specifikt range..

Jeg fik den til at skrive det fundne random tal til range A1 til B20, men problemet er at det er det samme tal den skriver i alle cellerne, og jeg vil gerne have den til at generere et nyt tal for hver celle.

Skal jeg benytte mig af et array eller hvordan kan jeg gøre dette ?

Mvh.



Kan jeg lige se koden til det?



Kan jeg lige se koden til det?


Sub RandomNo()
Dim MyRng As Range, Celle As Range

With ThisWorkbook.Worksheets("Ark1")
Set MyRng = Range(.Range("A1"), .Range("B20"))

For Each Celle In MyRng
Randomize
MyRng.Value = Int((600 - 2 + 1) * Rnd + 1)
Next Celle

End With

End Sub






Jeg ved intet om VB, men jeg tror at du skal nøjes med at kalde Randomize én gang.



Så fandt jeg ud af det :)



Sub RndTaliRng()
Dim MyRng As Range
Dim intCells As Integer
Dim arrRng() As Integer
Dim i As Integer

With ThisWorkbook.Worksheets("Ark1")
Set MyRng = Range(.Range("A1"), .Range("B20"))

intCells = ThisWorkbook.Worksheets("Ark1").Range(.Range("A1"), .Range("B20")).Cells.Count

ReDim arrRng(intCells)

For i = 1 To UBound(arrRng)
arrRng(i) = ThisWorkbook.Worksheets("Ark1").Cells(1, i)
Next i

For i = 1 To UBound(arrRng)
Randomize
MyRng(i).Value = Int((100 - 2 + 1) * Rnd + 1)
Next i

End With

End Sub



Hvis du udskifter linien
MyRng.Value = Int((600 - 2 + 1) * Rnd + 1)
med
Celle.Value = Int((600 - 2 + 1) * Rnd + 1)
så virker det.
MyRng.Value refererer til alle celler i dit range, så
det tal du får i alle celler er det sidst genererede tal.


Kan jeg lige se koden til det?


Sub RandomNo()
Dim MyRng As Range, Celle As Range

With ThisWorkbook.Worksheets("Ark1")
Set MyRng = Range(.Range("A1"), .Range("B20"))

For Each Celle In MyRng
Randomize
MyRng.Value = Int((600 - 2 + 1) * Rnd + 1)
Next Celle

End With

End Sub






t