Thanks Paul for your response.Here is the complete macro for better understanding.
Sub Fetch_Click() Dim wshD As Worksheet Dim wshP As Worksheet Dim rngD As Range Dim rngP As Range Dim r As Long Dim m As Long Dim n As Integer Dim rngD2 As Range Dim rngD3 As Range Dim rngD4 As Range Dim LastRow As Long Dim i As Long Set wshD = Worksheets("Data") Set wshP = Worksheets("Dashboard") wshP.Range("B12:G10000").ClearContents Set rngD = wshD.Range("G:G").Find(What:=Me.ComboBox1.Value, Lookat:=xlWhole) Set rngD2 = wshD.Range("C:C").Find(What:=Me.DTPicker3.Value, Lookat:=xlWhole) Set rngD3 = wshD.Range("C:C").Find(What:=Me.DTPicker2.Value, Lookat:=xlWhole) Set rngD4 = wshD.Range("E:E").Find(What:=Me.ComboBox2.Value, Lookat:=xlWhole) LastRow = wshD.Range("C10000").End(xlUp).Row n = 0 For r = 2 To LastRow If Not rngD And rngD4 Is Nothing Then If (wshD.Cells(r, "C") >= rngD2 And wshD.Cells(r, "C") <= rngD) And (wshD.Cells(r, "G") = rngD And wshD.Cells(r, "E") = rngD4) Then Worksheets("Data").Rows(r).EntireRow.Copy Destination:=wshP.Range("A" & wshP.Rows.Count).End(xlUp).Offset(11 + n, 0) Application.CutCopyMode = False n = n + 1 End If End If Next r LastRow = Range("C" & Rows.Count).End(xlUp).Row For i = 12 To LastRow Range("B" & i).Value = i - 11 Next i End Sub Data it is trying to pull is an extract from outlook mailbox. Date picker for from and to dates and comboboxes are for sender and categories. Now my point is when I enter only dates then it should pull all emails between those dates. When I add sender to it then it should filter accordingly. Currently, if i do not enter all criterias it does not run and fetch results. Hope this time I made it clearer. Cheers Karthik On Tuesday, 29 March 2016 13:41:28 UTC+5:30, Karthik wrote: > > > > Hello, > > I have formulated a macro to search data, from a worksheet, using user > forms. User form has Date picker and couple of comboxes. Idea is to search > between two dates along with two criterias. > > My problem is, macro doesnt function if I do not enter all the search > criterias. Ideally, it should search based on given criterias. I wil just > copy the main part of the macro as others are not relevantto my question > > If (wshD.Cells(r, "C") >= rngD2 And wshD.Cells(r, "C") <= rngD) And > (wshD.Cells(r, "G") = rngD And wshD.Cells(r, "E") = rngD4) Then > Worksheets("Data").Rows(r).EntireRow.Copy > Destination:=wshP.Range("A" & wshP.Rows.Count).End(xlUp).Offset(11 + n, 0) > Application.CutCopyMode = False > n = n + 1 > > End If > > I think change needed here when any of the criteria points to Nothing they > should search the rest. > > Regards > Karthik > -- Are you =EXP(E:RT) or =NOT(EXP(E:RT)) in Excel? And do you wanna be? It’s =TIME(2,DO:IT,N:OW) ! Join official Facebook page of this forum @ https://www.facebook.com/discussexcel FORUM RULES 1) Use concise, accurate thread titles. Poor thread titles, like Please Help, Urgent, Need Help, Formula Problem, Code Problem, and Need Advice will not get quick attention or may not be answered. 2) Don't post a question in the thread of another member. 3) Don't post questions regarding breaking or bypassing any security measure. 4) Acknowledge the responses you receive, good or bad. 5) Jobs posting is not allowed. 6) Sharing copyrighted material and their links is not allowed. NOTE : Don't ever post confidential data in a workbook. Forum owners and members are not responsible for any loss. --- You received this message because you are subscribed to the Google Groups "MS EXCEL AND VBA MACROS" group. To unsubscribe from this group and stop receiving emails from it, send an email to excel-macros+unsubscr...@googlegroups.com. To post to this group, send email to excel-macros@googlegroups.com. Visit this group at https://groups.google.com/group/excel-macros. For more options, visit https://groups.google.com/d/optout.