Yes, can you pls suggest the alternative code. Idea is when comboboxes are empty then it should run only on dates.
Cheers Karthik On Tuesday, 29 March 2016 20:01:03 UTC+5:30, Paul Schreiner wrote: > > Ah... > I think maybe we should rethink the logic here. > In your statement: > Set rngD = wshD.Range("G:G").Find(What:=Me.ComboBox1.Value, > Lookat:=xlWhole) > if Me.ComboBox1.Value is empty, you're looking in column G for "nothing". > Does the .Find method return an empty range? or a range of which column G > is blank? > > I think you probably ought to check the values of Me.ComboBox1.Value and > Me.ComboBox2.Value > and exit if either is empty. > > Also: > If (wshD.Cells(r, "C") >= rngD2 And wshD.Cells(r, "C") <= rngD) > > Shouldn't that be: > If (wshD.Cells(r, "C") >= rngD2 And wshD.Cells(r, "C") <= rngD3) > > Since Column C seems to be dates? > > *Paul* > ----------------------------------------- > > > > > > > > *“Do all the good you can,By all the means you can,In all the ways you > can,In all the places you can,At all the times you can,To all the people > you can,As long as ever you can.” - John Wesley* > ----------------------------------------- > > > > > On Tuesday, March 29, 2016 9:49 AM, Karthik <karthikis...@gmail.com > <javascript:>> wrote: > > > > 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...@googlegroups.com <javascript:>. > To post to this group, send email to excel-...@googlegroups.com > <javascript:>. > Visit this group at https://groups.google.com/group/excel-macros. > For more options, visit https://groups.google.com/d/optout. > > > -- 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.