This will populate the listbox
Private Sub cmdContact_Click()
'dim the variables
Dim Crit As Range, FindMe As Range, DataSH As Worksheet, lr1 As Long, mycol As Integer
'set object variables
Set DataSH = Sheet2
'hold in memory and stop screen flicker
Application.ScreenUpdating = False
lr1 = DataSH.Range("B" & Rows.Count).End(xlUp).Row
DataSH.Range("AR6", "BZ" & lr1).ClearContents
If Me.txtSearch = "" Then
DataSH.Range("B6", "AL" & lr1).Copy DataSH.Range("AR6")
lstStaff.RowSource = DataSH.Range("outdata").Address(external:=True)
Else
'if all columns is selected
If Me.cboHeader.Value = "All_Columns" Then
Set FindMe = DataSH.Range("B6:AJ10005").Find(What:=txtSearch, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False):
DataSH.Range("A5", "AL" & lr1).AutoFilter FindMe.Column, Criteria1:=FindMe.Value
With DataSH.Range("B5").CurrentRegion
.Offset(1).Copy DataSH.Range("AR6")
End With
DataSH.AutoFilterMode = False
lstStaff.RowSource = DataSH.Range("outdata").Address(external:=True)
End If
'if not all columns is selected
If Me.cboHeader.Value <> "All_Columns" Then
If cboHeader = "Last_Name" Then mycol = 3
If cboHeader = "Email_Address" Then mycol = 10
If cboHeader = "Work_Tel_No" Then mycol = 11
If cboHeader = "Mob_Tel_No" Then mycol = 12
If cboHeader = "Reg1_No" Then mycol = 18
If cboHeader = "Reg2_No" Then mycol = 24
DataSH.Range("A5", "AL" & lr1).AutoFilter mycol, Criteria1:=txtSearch
With DataSH.Range("B5").CurrentRegion
.Offset(1).Copy DataSH.Range("AR6")
End With
DataSH.AutoFilterMode = False
lstStaff.RowSource = DataSH.Range("outdata").Address(external:=True)
End If
End If
End Sub
Kind regards
Leo
Bookmarks