- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
35#
發表於 2015-11-24 13:13
| 只看該作者
本帖最後由 GBKEE 於 2015-11-24 14:45 編輯
回復 34# Airman
參考准提部林 版主說明
試試看- Option Explicit
- Dim Sh As Worksheet '這模組的私用變數
- Private Sub CommandButton1_Click()
- Dim b As Range, Rng As Range
- Dim xRng(1 To 2) As Range
- With Sheets("Sheet1") '要呈現的工作表
- Sheets("DATA").Range("J7", "P" & .[R6] + 5).Copy .[J7]
- Set Rng = .Range("J7:P" & .[R6] + 5) '所複製資料的範圍
- Rng.Interior.ColorIndex = xlNone
- Set xRng(1) = .Range("T7:T" & .[R6] + 5) 'T欄的範圍
- If Application.Count(xRng(1)) = 0 Then Exit Sub 'T欄沒有期數時離開程式
-
- Set Sh = Sheets.Add(Sheets(1)) '增加一工作表
- Application.ScreenUpdating = False '如果螢幕更新功能是開啟的則為 True
- For Each b In xRng(1).SpecialCells(xlCellTypeConstants) 'T欄 [有期數的儲存格]範圍
- Ex_ChiCK Union(Rng.Rows(.Range("R" & b.Row)), Rng.Rows(.Range("R" & b.Row) - .[T3]), Rng.Rows(.Range("R" & b.Row) - .[T3] * 2)) '期別的陣列
- 'Ex_ChiCK Union(Rng.Rows(.Range("R" & b.Row) - .[T3] * 2), Rng.Rows(.Range("R" & b.Row) - .[T3]), Rng.Rows(.Range("R" & b.Row))) '倒轉期別
- Next
- .Activate '將目前的工作表成為使用中的工作表。等同於按一下工作表索引標籤。
- .[a1].Select '滑鼠停留在Sheets(2)的 A1
- End With
- Application.DisplayAlerts = False '如果巨集在執行時 Microsoft Excel 顯示特定的警告和訊息則為 True
- Sh.Delete '刪除:工作表
- Application.DisplayAlerts = True
- Application.ScreenUpdating = True
- End Sub
- Private Sub Ex_ChiCK(Rng As Range) '副程式 須傳送參數
- Dim Ar(), i As Variant, E As Variant, X As Variant, M As Integer
- Ar = Array(4, 45, 8)
- Rng.Copy Sh.[a1] '複製三期資料
- For i = 1 To 49
- X = Application.CountIf(Sh.UsedRange, i) 'x = 3 :同一號碼三期都出現
- If X = 3 Then E = E & IIf(E <> "", ",", "") & i '紀錄號碼
- Next
- X = Split(E, ",") '出現3次的號碼,置入陣列
- For Each E In X
- For i = 1 To Rng.Areas.Count
- '傳回 Areas 集合,此集合代表多重範圍中的所有範圍
- M = Application.Match(Val(E), Rng.Areas(i).Cells, 0)
- Rng.Areas(i).Cells(M).Interior.ColorIndex = Ar(i - 1) '依範圍傳回的顏色
- Next
- Next
- End Sub
複製代碼 |
|