Attribute VB_Name = "ModList" Option Explicit Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Public Declare Function SendMessageByString Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long Public Declare Function SendMessageLong& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) Public Declare Function SendMessageByNum& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) Public Const LB_ADDSTRING& = &H180 Public Const LB_DELETESTRING = &H182 Public Const LB_FINDSTRINGEXACT& = &H1A2 Public Const LB_GETCOUNT& = &H18B Public Const LB_GETCURSEL& = &H188 Public Const LB_GETITEMDATA = &H199 Public Const LB_GETTEXT = &H189 Public Const LB_GETTEXTLEN& = &H18A Public Const LB_INSERTSTRING = &H181 Public Const LB_RESETCONTENT& = &H184 Public Const LB_SETHORIZONTALEXTENT = &H194 Public Const LB_SETSEL = &H185 Public Sub xListKillDupes(listbox As listbox) 'Kills dublicite items in a listbox Dim Search1 As Long Dim Search2 As Long Dim KillDupe As Long KillDupe = 0 For Search1& = 0 To listbox.ListCount - 1 For Search2& = Search1& + 1 To listbox.ListCount - 1 KillDupe = KillDupe + 1 If listbox.List(Search1&) = listbox.List(Search2&) Then listbox.RemoveItem Search2& Search2& = Search2& - 1 End If Next Search2& Next Search1& End Sub