|
发表于 2013-1-15 14:07
|
显示全部楼层
本楼为最佳答案
本帖最后由 aof110 于 2013-1-15 14:31 编辑
换了种思路
用一直向左转的方法
Sub aa()
Dim arr() As Integer
Dim i%, n%, x%, y%, x2%, y2%
On Error Resume Next
n = 6
x = 1: y = 1 '初始位置
x2 = 1: y2 = 0 '控制方向
ReDim arr(1 To n, 1 To n)
For i = 1 To n * n
arr(x, y) = i
If arr(x + x2, y + y2) <> 0 Then
If x2 = 1 And y2 = 0 Then
x2 = 0: y2 = 1
ElseIf x2 = 0 And y2 = 1 Then
x2 = -1: y2 = 0
ElseIf x2 = -1 And y2 = 0 Then
x2 = 0: y2 = -1
ElseIf x2 = 0 And y2 = -1 Then
x2 = 1: y2 = 0
End If
End If
x = x + x2
y = y + y2
Next i
Range("a1").Resize(n, n) = ""
Range("a1").Resize(n, n) = arr
End Sub |
评分
-
查看全部评分
|