返回列表 上一主題 發帖

[發問] 在方陣或矩陣中,以旋轉方式填入值

回復 1# 准提部林
Sub 以旋轉方式填入值() 局限在[A1:Z26]
  1. Sub testarr()
  2. arrX 7, 1  '2003 '階數須是奇數,如偶數執行有堆疊空間不足的錯誤
  3. End Sub
複製代碼
Sub Ex()
    '矩陣可為5*5,6*6,7*7,..256*256...視Excel版本
    Dim xNo As Double, Rng As Range, Rc As Double, i As Integer
    ActiveSheet.UsedRange.Clear
    xNo = Application.InputBox("輸入排列數字", , 25, Type:=1)
    Rc = Application.Evaluate("CEILING(Sqrt(" & xNo & "),1)")
    If Rc Mod 2 <> 0 Then i = 1
    If Int(Rc / 2) + i > Int(Columns.Count / 2) Then
       MsgBox "輸入排列數字" & xNo & "的欄位數 " & Int(Rc / 2) + i & vbLf & "大於 工作表之總欄位/ 2  =>" & Columns.Count / 2
       End
    End If
    Set Rng = Cells(Int(Rc / 2) + i, Int(Rc / 2) + i)   '以A1為相對位置的中心儲存格
    Rng.Select
    Rng.Interior.Color = vbRed
    Rng = 1
    Do
        '右,下,左,上 順時鐘方向
        Do
            If Rng >= Rc * Rc Then End
            Rng.Offset(, 1) = Rng + 1
            Set Rng = Rng.Offset(, 1)   '右移一欄
        Loop Until Rng.Offset(1) = ""   '下一列 = ""
        
        Do
            Rng.Offset(1) = Rng + 1
            Set Rng = Rng.Offset(1)      '下移一列
        Loop Until Rng.Offset(, -1) = "" '左一欄 = ""
   
        Do
            If Rng >= Rc * Rc Then End
            Rng.Offset(, -1) = Rng + 1
            Set Rng = Rng.Offset(, -1)  '左移一欄
        Loop Until Rng.Offset(-1) = ""  '上一列 = ""
   
        Do
            Rng.Offset(-1) = Rng + 1
            Set Rng = Rng.Offset(-1)    '上移一列
        Loop Until Rng.Offset(, 1) = "" '右一欄 = ""
    Loop
   
End Sub
1

評分人數

感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 能善用時間的人,必能掌握自己努力的方向。
返回列表 上一主題