| ©«¤l248 ¥DÃD55 ºëµØ0 ¿n¤À314 ÂI¦W214  §@·~¨t²ÎXP / WIN7 ³nÅ骩¥»2003 / 2007 ¾\ŪÅv20 ©Ê§O¨k ¨Ó¦ÛTainan µù¥U®É¶¡2013-10-18 ³Ì«áµn¿ý2025-10-31 
             
 | 
                
| ¦^´_ 17# GBKEE 
 ÁÂÁªO¤j¦A¦¸À°§Ú×§ï
 
 §Ú¦A´ú¸Õ¤@¦¸ÁÙ¬O·|¦h§R°£C
 
 ¥H¤U¬O§Ú¥Î¤j¤jµ{¦¡½X×§ï«áªº
 À³¸Ó¬O³o¼Ë§ï¨S¦³¿ù§a½Æ»s¥N½XOption Explicit
Sub Ex()
    Dim d As New Collection, AR(1 To 7), i As Integer, Rng(1 To 2) As Range, E As Variant
    On Error Resume Next              'Collection·s¼WªºKEY¦p³Q¨Ï¥Î©Î¦³¿ù»~
    With Worksheets("²£«~ºÞ±±²M³æ")
        For i = 2 To .Range("J1").End(xlDown).Row
            AR(1) = .Range("E" & i)             'PRODUCT ID(A)
            AR(2) = .Range("F" & i)             'CHILDPARTNUMBER(B)
            AR(3) = .Range("C" & i)             'MP date(G)
            AR(4) = .Range("A" & i)             '¶g§O(H)
            AR(5) = .Range("B" & i)             '§ó·s¶g§O(I)
            AR(6) = DateDiff("d", Date, AR(3))  '¤u§@¤é(M)
            AR(7) = .Range("J" & i)             'Product ID & PartNumber(F)
            d.Add AR, .Range("J" & i).Value
            '*****§ä¥X[²£«~ºÞ±±²M³æ]«½Æªº[ID & PartNumber]  ****
            If Err <> 0 Then
                Err.Clear
                If Rng(1) Is Nothing Then
                    Set Rng(1) = .Range("J" & i)
                Else
                    Set Rng(1) = Union(.Range("J" & i), Rng(1))
                End If
            End If
            '*****************************************************
        Next
    End With
    With Worksheets("ª«®ÆºÞ±±²M³æ")
        For Each E In .Range("F:F").SpecialCells(xlCellTypeConstants).Offset(1)
            .Range("A" & E.Row) = d(E.Value)(1)
            .Range("B" & E.Row) = d(E.Value)(2)
            .Range("G" & E.Row) = d(E.Value)(3)
            .Range("H" & E.Row) = d(E.Value)(4)
            .Range("I" & E.Row) = d(E.Value)(5)
            .Range("M" & E.Row) = d(E.Value)(6)
            .Range("F" & E.Row) = d(E.Value)(7)
            If Err = 0 Then                     'ª«®ÆªºID & PartNumber,¦s¦b²£«~ªºID & PartNumber¤¤
                d.Remove E.Value                '°£¥h:²£«~ªºID & PartNumber
            ElseIf Err <> 0 And E <> "" Then    'ª«®ÆªºID & PartNumber,¤£¦s¦b²£«~ªºID & PartNumber¤¤
                If Rng(2) Is Nothing Then       '¨úªºÀx¦s®æªº¦ì¸m
                    Set Rng(2) = E
                Else
                    Set Rng(2) = Union(E, Rng(2))
                End If
            End If
            Err.Clear
        Next
        If d.Count > 0 Then                     '¸É¤W:ª«®Æ¨S¦³ªº²£«~ID & PartNumber
            i = 0
            With .Range("A1").End(xlDown)
                For Each E In d
                    i = i + 1
                    .Offset(i).Range("A1") = E(1)
                    .Offset(i).Range("B1") = E(2)
                    .Offset(i).Range("G1") = E(3)
                    .Offset(i).Range("H1") = E(4)
                    .Offset(i).Range("I1") = E(5)
                    .Offset(i).Range("M1") = E(6)
                    .Offset(i).Range("F1") = E(7)
                Next
            End With
        End If
    End With
    
'    '********* "²£«~ºÞ±±²M³æ" §R°£«½Æªº[ID & PartNumber]*******************
'    If Not Rng(1) Is Nothing Then
'        If MsgBox("§R°£«½Æªº[ID & PartNumber]", vbQuestion + vbYesNo, "²£«~ºÞ±±²M³æ") = vbYes Then
'            Rng(1).EntireRow.Delete
'        End If
'    End If
    
'    '********* "²£«~ºÞ±±²M³æ" §R°£«½Æªº[ID & PartNumber]*******************
'    If Not Rng(1) Is Nothing Then
'        If MsgBox("§R°£«½Æªº[ID & PartNumber]", vbQuestion + vbYesNo, "²£«~ºÞ±±²M³æ") = vbYes Then
'             Worksheets("²£«~ºÞ±±²M³æ").Activate
'            Stop                                            'µ{¦¡·|°±¤î «öF8¤@¨B¤@¨B°õ¦æ¤U¥h¬Ý¤u§@ªíªº±¡§Î
'            Rng(1).EntireRow.Select                  '¿ï¨ú«½ÆªºID
'            MsgBox Rng(1).EntireRow.Address
'            Debug.Print Rng(1).EntireRow.Address
''            Rng(1).EntireRow.Delete   '¥ýµù¸Ñ±¼¤£§R°£
'        End If
'    End If
    
    
    If Not Rng(1) Is Nothing Then
    '**** §R°£"²£«~"«½Æªº³¡¤À->Rng(1)
        If MsgBox("§R°£«½Æªº[ID & PartNumber]", vbQuestion + vbYesNo, "²£«~ºÞ±±²M³æ") = vbYes Then
            Rng(1).Interior.Color = vbGreen    '«½Æªº¼Ðµù¬°ºñ¦â
            For Each E In Rng(1).Areas
                For i = 1 To E.Cells.Count
                    Set Rng(3) = Rng(1).EntireColumn.Find(E.Cells(i), LookIn:=xlValues)
                    If Application.Intersect(Rng(1), Rng(3)) Is Nothing Then
                        Rng(3).Interior.Color = vbRed      '«O¯d²Ä¤@µ§«½Æªº¼Ðµù¬õ¦â
                    End If
                Next
            Next
          '  Rng(1).EntireRow.Delete  ¥ý¤£§R°£¥h¬Ý¬Ý¦³«O¯d¦bþ¸Ì
        End If
    End If
    
    
    '********* "ª«®ÆºÞ±±²M³æ" §R°£«½Æªº[ID & PartNumber]*******************
    If Not Rng(2) Is Nothing Then
        If MsgBox("§R°£«½Æªº[ID & PartNumber]", vbQuestion + vbYesNo, "ª«®ÆºÞ±±²M³æ") = vbYes Then
          'Rng(2).EntireRow.Select
           Rng(2).EntireRow.Delete
        End If
    End If
    MsgBox "Ok"
End Sub
 
 ¦ý§Ú¶]¥X¨Ó"²£«~"¨ºÃä¤@¼Ë¬O¦h§R°£
 
 ¥¿±`À³¸Ó³Ñ1206¶µ¦ý§R°£«á«o¥u³Ñ1194¶µ
 
 ¦n©_©Ç³á@@
 
 
 ¤j¤j»¡·s¼Wªº³¡¤À
 
 ¦]¬°§Úªº"²£«~"¬O¥Ñ¨â±i¤u§@ªí¦X¦Ó¬°¤@ªº
 
 ©Ò¥H·s¼W¬O¤À§O¦b¨â±i¤u§@ªí°µªº
 
 ©Ò¥H·s¼Wªº¸ê°T¥i¯à·|¦b"²£«~"ªº¤¤¶¡³¡¤À
 
 ¤£¬O¦b"²£«~"ªº³Ì¤U¤è
 
 
 
 ½Ð°Ý¤j¤j
 
 §Ú¯à¥ý³B²z§R°£«½Æ
 
 ¨º³æ¯Â¥u°µ"²£«~","ª«®Æ"¸ê°Tªº·s¼W§R°£×§ï¶Ü???
 
 ³o¼Ë¬O§_¤ñ¸û¨S³o»ò½ÆÂø
 (´N¥h°£±¼±Æ°£«½Æªº¨BÆJ¡A¨ä¾l³£¤@¼Ë)
 
 
 
 ¥H¤W ³Â·Ð¤j¤j  °Ñ°u  ÁÂÁ  :   )
 | 
 |