- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
5#
發表於 2013-4-15 17:20
| 只看該作者
回復 3# b9208
不明白的函數,方法,屬性,可在程式碼中用滑鼠選取後,按F1查看說明
回復 4# b9208
程式碼須修改如下- Option Explicit
- Sub Ex()
- Dim DataBase As Range, I As Integer, D As Object, D_Item As Variant
- Dim W As String
- Set D = CreateObject("SCRIPTING.DICTIONARY") '字典物件
- With Sheets("工作表1")
- Set DataBase = .Range("A5").Resize(.[B5].End(xlDown).Row - 4, 9) '制定範圍
- End With
- With DataBase
- .Sort Key1:=.Cells(1, 2), Order1:=xlAscending, Key2:=.Cells(1, 3), Order2:=xlAscending, Key3:=.Cells(1, 4), Order3:=xlAscending, Header:=xlYes
- '2003 排序只有3個排序欄位 :星期,料號,單位
- .Sort Key1:=.Cells(1, 2), Order1:=xlAscending, Key2:=.Cells(1, 3), Order2:=xlAscending, Key3:=.Cells(1, 6), Order3:=xlAscending, Header:=xlYes
- '再次排序:星期,料號,姓名
- For I = 1 To .Rows.Count
- With .Rows(I)
- W = .Cells(2) & .Cells(3) & .Cells(4) & .Cells(6) '「星期+料號+單位+姓名」四欄位資料
- End With
- If Not D.Exists(W) Then
- 'Exists 方法 如果在 Dictionary 物件中指定的關鍵字存在,傳回 True,若不存在,傳回 False。
- '語法 Object.Exists (key)
- Set D(W) = .Rows(I) ''字典物件的內容: 為Range
- Else
- Set D(W) = Union(D(W), .Rows(I)) 'Union 方法 傳回兩個或多個範圍的合併範圍。
- End If
- Next
- For Each D_Item In D.ITEMS '依序傳回 字典物件的內容
- With D_Item '字典物件的內容: 為Range
- If .Rows.Count > 1 Then '
- For I = 2 To .Rows.Count '從第2列開始
- .Rows(I).Interior.Color = vbYellow
- .Rows(I).Cells(4) = 0
- .Rows(I).Cells(4).Font.Color = vbRed
- Next
- End If
- End With
- Next
- End With
- End Sub
複製代碼 |
|