[COLOR="Navy"]Sub[/COLOR] MG24Apr45
[COLOR="Navy"]Dim[/COLOR] Rng [COLOR="Navy"]As[/COLOR] Range, Dn [COLOR="Navy"]As[/COLOR] Range, Num [COLOR="Navy"]As[/COLOR] [COLOR="Navy"]Long,[/COLOR] R [COLOR="Navy"]As[/COLOR] Range, n [COLOR="Navy"]As[/COLOR] [COLOR="Navy"]Long,[/COLOR] txt [COLOR="Navy"]As[/COLOR] [COLOR="Navy"]String,[/COLOR] RndRw [COLOR="Navy"]As[/COLOR] [COLOR="Navy"]Long[/COLOR]
[COLOR="Navy"]Dim[/COLOR] Col [COLOR="Navy"]As[/COLOR] Range, nCol [COLOR="Navy"]As[/COLOR] [COLOR="Navy"]String,[/COLOR] c [COLOR="Navy"]As[/COLOR] [COLOR="Navy"]Long,[/COLOR] cRng [COLOR="Navy"]As[/COLOR] Range, p [COLOR="Navy"]As[/COLOR] [COLOR="Navy"]Long[/COLOR]
[COLOR="Navy"]Set[/COLOR] Rng = Range("A2:A7")
Range("F1:J5").ClearContents
Randomize
'[COLOR="Green"][B]Loop through each value in column "A"[/B][/COLOR]
[COLOR="Navy"]For[/COLOR] [COLOR="Navy"]Each[/COLOR] Dn [COLOR="Navy"]In[/COLOR] Rng
'[COLOR="Green"][B]set variables to 0[/B][/COLOR]
n = 0: p = 0
'[COLOR="Green"][B]loop until n equals the Dn.value in column "B"[/B][/COLOR]
[COLOR="Navy"]Do[/COLOR] Until n >= Dn.Offset(, 1).Value
'[COLOR="Green"][B]set variables to Nullstring and 0[/B][/COLOR]
txt = "": c = 0
'[COLOR="Green"][B]set random number for rows 1 to 5[/B][/COLOR]
RndRw = Application.RandBetween(1, 5)
'[COLOR="Green"][B]start counter p to exit if not computable[/B][/COLOR]
p = p + 1
[COLOR="Navy"]If[/COLOR] p >= 1000 [COLOR="Navy"]Then[/COLOR] GoTo xt
'[COLOR="Green"][B]Make sure there are blank spaces in row "RndRw" columns "F to j" by counting constants in row[/B][/COLOR]
[COLOR="Navy"]If[/COLOR] Not Application.CountA(Cells(RndRw, 6).Resize(, 5)) = 5 [COLOR="Navy"]Then[/COLOR]
'[COLOR="Green"][B]Create range variabl "R" of cells in row "RndRw" that are Blank[/B][/COLOR]
[COLOR="Navy"]Set[/COLOR] R = Cells(RndRw, 6).Resize(, 5).SpecialCells(xlCellTypeBlanks)
'[COLOR="Green"][B]Join all text in row "RndRw", as string variable "Txt"[/B][/COLOR]
txt = Join(Application.Transpose(Application.Transpose(Cells(RndRw, 6).Resize(, 5))), ",")
'[COLOR="Green"][B]Check that the Dn.value (lesson) does not already exist in row "Rndrw"[/B][/COLOR]
[COLOR="Navy"]If[/COLOR] InStr(txt, Dn.Value) = 0 [COLOR="Navy"]Then[/COLOR]
'[COLOR="Green"][B]Create an One dimensional array of size (R.count) (Blank cells in Row "RndRw")[/B][/COLOR]
ReDim Ray(1 To R.Count)
[COLOR="Navy"]For[/COLOR] [COLOR="Navy"]Each[/COLOR] Col [COLOR="Navy"]In[/COLOR] R
c = c + 1
'[COLOR="Green"][B]Place in array "Ray" the column numbers, in columns "F to J" that are blank in row "RndRw"[/B][/COLOR]
Ray(c) = Col.Column
[COLOR="Navy"]Next[/COLOR] Col
'[COLOR="Green"][B]select a random number in array, to get random column Number in row that is empty[/B][/COLOR]
Num = Application.RandBetween(1, UBound(Ray))
'[COLOR="Green"][B]Place dn.Value (column A) in empty cell in row "RndRw"[/B][/COLOR]
Cells(RndRw, Ray(Num)) = Dn
'[COLOR="Green"][B]Count number of entries made in range(F1:J5"[/B][/COLOR]
n = n + 1
[COLOR="Navy"]End[/COLOR] If
[COLOR="Navy"]End[/COLOR] If
[COLOR="Navy"]Loop[/COLOR]
[COLOR="Navy"]Next[/COLOR] Dn
[COLOR="Navy"]On[/COLOR] [COLOR="Navy"]Error[/COLOR] [COLOR="Navy"]Resume[/COLOR] [COLOR="Navy"]Next[/COLOR]
'[COLOR="Green"][B]Shift cells left & other bits.[/B][/COLOR]
[COLOR="Navy"]With[/COLOR] Range("F1:J5")
.SpecialCells(xlCellTypeBlanks).Delete shift:=xlToLeft
.VerticalAlignment = xlCenter
.HorizontalAlignment = xlCenter
.Borders.Weight = xlThick
[COLOR="Navy"]End[/COLOR] With
MsgBox "Success!!"
[COLOR="Navy"]Exit[/COLOR] [COLOR="Navy"]Sub[/COLOR]
xt:
MsgBox "Not Computable, Try again"
[COLOR="Navy"]End[/COLOR] [COLOR="Navy"]Sub[/COLOR]