- 帖子
- 2025
- 主題
- 13
- 精華
- 0
- 積分
- 2053
- 點名
- 0
- 作業系統
- WIN7
- 軟體版本
- Office2007
- 閱讀權限
- 100
- 性別
- 男
- 來自
- 台北市
- 註冊時間
- 2011-3-2
- 最後登錄
- 2024-3-14
     
|
2#
發表於 2015-10-24 22:45
| 只看該作者
- Option Base 1
- Sub 以旋轉方式填入值()
- xc = 10: yc = 10 '中心位置
- 右 = [{0, 1}]: 下 = [{1,0}]: 左 = [{0,-1}]: 上 = [{-1, 0}]
- yx = Application.Transpose(Application.Transpose(Array(右, 下, 左, 上))) '控制方向及轉向
-
- n = InputBox("輸入排列數字", , 25)
- n1 = Application.RoundUp(((n ^ 0.5) - 1) / 2, 0) + 1
- nn = n1 * 2 + 1
- Cells(yc - n1, xc - n1).Resize(nn, nn).ClearContents
- x = xc: y = yc
- Cells(xc, yc) = 1
- For i = 2 To n
- ds = [{0,0,0,0}]
- For j = 1 To 4 '四個方向
- If Cells(y + yx(j, 1), x + yx(j, 2)) = "" Then
- ds(j) = ((y + yx(j, 1) - yc) ^ 2 + (x + yx(j, 2) - xc) ^ 2) * 10 + j '距離*10+方向
- Else
- ds(j) = ""
- End If
- Next
- jj = Application.Min(ds) Mod 10 '取距離原點最短及排列最前方向
- x = x + yx(jj, 2)
- y = y + yx(jj, 1)
- Cells(y, x) = i
- Next
- End Sub
複製代碼 |
-
1
評分人數
-
|