返回列表 上一主題 發帖

EXCEL ActiveX控制按鈕 請教

本帖最後由 Andy2483 於 2023-2-20 10:23 編輯

回復 7# sschristy


    謝謝前輩
後學學習陣列與字典的另一方案,請前輩試試看,謝謝

Option Explicit
Sub 重算2()
Dim xR As Range, xU, Y, Arr(1 To 8, 1 To 4), N&, C#, R&
Set Y = CreateObject("Scripting.Dictionary")
For Each xU In Split("6/47/44/48/46/23/NA/50", "/")
   N = N + 1: Y(xU) = N
Next
For Each xU In Array(Range("A區"), Range("B區"), Range("C區"), Range("D區"))
   C = C + 1
   For Each xR In xU
      R = xR.Interior.ColorIndex
      If Y.Exists(R & "") = Empty Then GoTo 111
      Arr(Y(R & ""), C) = Arr(Y(R & ""), C) + xR.Value
111
   Next
Next
With Sheets("統計表")
   .[A1:F10].Copy .[A11]
   .[B13].Resize(8, 4) = Arr
   Application.Goto .[A1]
End With
Set Y = Nothing
Erase Arr
End Sub

2023-02-20_102219.JPG
2023-2-20 10:22
看得懂是應該的,懂得應用才像學生,臉皮厚點學會更謹慎積極

TOP

回復 9# Andy2483


    感謝指導

TOP

本帖最後由 Andy2483 於 2023-2-20 15:37 編輯

回復 10# sschristy


    謝謝前輩回復
以下再修正複習心得註解,加深學習印象,請前輩參考

Option Explicit
Sub 重算2()
Dim xR As Range, xU, Y, Arr(1 To 8, 1 To 4), N&, R&, C%
'↑宣告變數:xR是儲存格變數,(xU,Y)是通用型變數,
'Arr是二維陣列!縱向從1到8索引列號,橫向從1到4索引欄號,(N,R)是長整數,C是短整數

Set Y = CreateObject("Scripting.Dictionary")
'↑令Y是 字典
For Each xU In Split("6/47/44/48/46/23/NA/50", "/")
'↑設迴圈!令xU是 Split()一維陣列的一陣列子
   N = N + 1: Y(xU) = N
   '↑令N累加1:令以 xU變數為key,item為N變數 納入Y字典
Next
For Each xU In Array(Range("A區"), Range("B區"), Range("C區"), Range("D區"))
'↑設迴圈!令xU是 Array()陣列的一陣列子
   C = C + 1
   '↑令C累加1
   For Each xR In xU
   '↑設迴圈!令xR是 xU變數中的一元素
      R = xR.Interior.ColorIndex
      '↑令R是xR變數的底色代號
      If Y.Exists(R & "") = Empty Then GoTo 111
      '↑如果R變數連接空字元為key,Y字典Exists()回傳的是初始值(無此顏色代號),
      '跳到111位置繼續執行

      Arr(Y(R & ""), C) = Arr(Y(R & ""), C) + xR.Value
      '↑令字典回傳值列第C變數欄Arr陣列值是 自身+xR變數的值
      'PS 字典回傳值:(R連接空字元)查Y字典,回傳的item值

111
   Next
Next
With Sheets("統計表")
'↑以下是關於 "統計表"工作表的程序
   .[A1:F10].Copy .[A11]
   '↑令表[A1:F10]儲存格 複製到 表[A11]
   .[B13].Resize(8, 4) = Arr
   '↑令表[B13]擴展向下8列,擴展向右4欄範圍儲存格值以Arr陣列值帶入
   Application.Goto .[A1]
   '↑令儲存格游標 跳到 表[A1]
End With
Set Y = Nothing
Erase Arr
End Sub
看得懂是應該的,懂得應用才像學生,臉皮厚點學會更謹慎積極

TOP

        靜思自在 : 一個缺口的杯子,如果換一個角度看它,它仍然是圓的。
返回列表 上一主題