52 lines
1.3 KiB
VB.net
52 lines
1.3 KiB
VB.net
Sub spiral()
|
|
Dim n As Integer, a As Integer, b As Integer
|
|
Dim numCsquares As Integer, sideLen As Integer, currNum As Integer
|
|
Dim j As Integer, i As Integer
|
|
Dim j1 As Integer, j2 As Integer, j3 As Integer
|
|
|
|
n = 5
|
|
|
|
Dim spiralArr(9, 9) As Integer
|
|
numCsquares = CInt(Application.WorksheetFunction.Ceiling(n / 2, 1))
|
|
sideLen = n
|
|
currNum = 0
|
|
For i = 0 To numCsquares - 1
|
|
'do top side
|
|
For j = 0 To sideLen - 1
|
|
currNum = currNum + 1
|
|
spiralArr(i, i + j) = currNum
|
|
Next j
|
|
|
|
'do right side
|
|
For j1 = 1 To sideLen - 1
|
|
currNum = currNum + 1
|
|
spiralArr(i + j1, n - 1 - i) = currNum
|
|
Next j1
|
|
|
|
'do bottom side
|
|
j2 = sideLen - 2
|
|
Do While j2 > -1
|
|
currNum = currNum + 1
|
|
spiralArr(n - 1 - i, i + j2) = currNum
|
|
j2 = j2 - 1
|
|
Loop
|
|
|
|
'do left side
|
|
j3 = sideLen - 2
|
|
Do While j3 > 0
|
|
currNum = currNum + 1
|
|
spiralArr(i + j3, i) = currNum
|
|
j3 = j3 - 1
|
|
Loop
|
|
|
|
sideLen = sideLen - 2
|
|
Next i
|
|
|
|
For a = 0 To n - 1
|
|
For b = 0 To n - 1
|
|
Cells(a + 1, b + 1).Select
|
|
ActiveCell.Value = spiralArr(a, b)
|
|
Next b
|
|
Next a
|
|
End Sub
|