' Constructs 5 x 5 Generators with 5 Magic Rows
' Squares of Squares

' Tested with Office 2007 under Windows 7

```Sub CnstrGen5()

Dim a(25), a1(25), a2(25), nRw(5)

y = MsgBox("Blocked", vbInformation, "CnstrGen01")
End

n1 = 0: n9 = 0: k1 = 1: k2 = 1

ShtNm1 = "MgcLns5"

For j10 = 2 To 407
nRw1 = Sheets(ShtNm1).Cells(j10, 9).Value
nRw2 = Sheets(ShtNm1).Cells(j10, 10).Value
n8 = nRw2

Cells(n9 + 1, 29).Select
Cells(n9 + 1, 29).Value = j10

For j1 = nRw1 To nRw2

n10 = 5: Erase a
For i1 = 1 To 5
a1(i1) = Sheets(ShtNm1).Cells(j1, i1).Value
Next i1
s2 = Sheets(ShtNm1).Cells(j1, 7).Value
nRw(1) = j1

For i1 = 1 To 5             'First Line
a(i1) = a1(i1)
Next i1

For j2 = j1 + 1 To n8
j100 = j2: j101 = 2: GoSub 100: If fl1 = 0 Then GoTo 20
nRw(2) = j2

For j3 = j2 + 1 To n8
j100 = j3: j101 = 3: GoSub 100: If fl1 = 0 Then GoTo 30
nRw(3) = j3

For j4 = j3 + 1 To n8
j100 = j4: j101 = 4: GoSub 100: If fl1 = 0 Then GoTo 40
nRw(4) = j4

For j5 = j4 + 1 To n8
j100 = j5: j101 = 5: GoSub 100: If fl1 = 0 Then GoTo 50
nRw(5) = j5

n9 = n9 + 1: GoSub 640      'Print results (lines)
'   n9 = n9 + 1: GoSub 650      'Print results (squares)

n10 = n10 - 5
50 Next j5
n10 = n10 - 5
40 Next j4
n10 = n10 - 5
30 Next j3
n10 = n10 - 5
20 Next j2
n10 = n10 - 5
10 Next j1

Next j10

End

100 fl1 = 1

For i1 = 1 To 5
a2(i1) = Sheets(ShtNm1).Cells(j100, i1).Value
Next i1

For i1 = 1 To 5
a20 = a2(i1)
For i2 = 1 To n10
If a20 = a(i2) Then fl1 = 0: Return
Next i2
Next i1

n10 = n10 + 5
i2 = 0
For i1 = n10 - 5 + 1 To n10
i2 = i2 + 1
a(i1) = a2(i2)
Next i1

Return

'   Print Results (lines)

640 For i1 = 1 To 25
Cells(n9, i1).Value = a(i1)
Next i1
Cells(n9, 26).Value = n9
Cells(n9, 27).Value = s2

Return

'   Print Results (Squares)

650 n2 = n2 + 1
If n2 = 5 Then
n2 = 1: k1 = k1 + 6: k2 = 1
Else
If n9 > 1 Then k2 = k2 + 6
End If

Cells(k1, k2 + 1).Select
Cells(k1, k2 + 1).Font.Color = -4165632
Cells(k1, k2 + 1).Value = n9

i3 = 0
For i1 = 1 To 5
For i2 = 1 To 5
i3 = i3 + 1
Cells(k1 + i1, k2 + i2).Value = a(i3)
Next i2
Next i1

Return

End Sub
```