You could probably modularize the Unique List code into a more general purpose function


Option Explicit
    
Sub drv()
    Dim v As Variant
    Dim v1 As Variant
    
    v = UniqueList(Worksheets("Sheet1").Range("D1:D10"))
    
    For Each v1 In v
        MsgBox v1
    Next
End Sub


Public Function UniqueList(R As Range) As Variant
    Dim A() As String
    Dim C As Collection
    Dim R1 As Range
    Dim I As Long
    
    Set C = New Collection
    
    On Error Resume Next
    For Each R1 In R.Cells
        C.Add R1.Value, CStr(R1.Value)
    Next
    On Error GoTo 0
    
    ReDim A(1 To C.Count)
    
    For I = 1 To C.Count
        A(I) = C.Item(I)
    Next I
    
    UniqueList = A
End Function

You can mark your thread / question [Solved] by using [Tread Tools] menu above your first post