Sub Test() Dim Rng As Range, i%, Temp% Set Rng = Range("a1:c3") Rng.Clear For i = 1 To 9 DoWhile Rng(i) = "" Randomize Temp = Int(Rnd * 9 + 1) If WorksheetFunction.CountIf(Rng, Temp) = 0 Then Rng(i) = Temp Loop Next EndSub
Sub test() Dim rng As Range, i1 As Byte, i2 As Byte, tmp As Integer For Each rng In Range("a1:c3") i1 = Int(Rnd * 3 + 1) i2 = Int(Rnd * 3 + 1) tmp = Cells(i1, i2).Value Cells(i1, i2) = rng.Value rng.Value = tmp Next End Sub
OptionExplicit PrivateDeclareSub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen AsLong) Sub fx1() Dim a(1 To 9) AsLong, b(1 To 3, 1 To 3) AsLong Dim tmp AsLong Dim n AsLong Dim i AsLong Dim t AsDouble
For i = 1 To 9 a(i) = i Next For i = 1 To 9 n = Int(Rnd * 9 + 1) tmp = a(i) a(i) = a(n) a(n) = tmp Next CopyMemory ByVal VarPtr(b(1, 1)), ByVal VarPtr(a(1)), 4 * 9 [A1:C3] = b EndSub
Sub Test() Dim Rng As Range, i%, Temp% Set Rng = Range("a1:c3") Rng.Clear For i = 1 To 9 DoWhile Rng(i) = "" Randomize Temp = Int(Rnd * 9 + 1) If WorksheetFunction.CountIf(Rng, Temp) = 0 Then Rng(i) = Temp Loop Next EndSub
Sub tt() Dim arr Dim arr2 Dim i As Long Dim j As Long Dim m As Long Dim d As Object Set d = CreateObject("scripting.dictionary") Do m = Int(Rnd() * 9 + 1) d(m) = "" Loop Until d.Count = 9 arr = d.keys ReDim arr2(1 To 3, 1 To 3) For i = 1 To 3 For j = 1 To 3 arr2(i, j) = arr(i * 3 + j - 4) Next j Next i Range("A1:C3") = arr2 End Sub