Since I don't know anything about your workbook or the types of values, I'd suggest something like what follows.I've run into issues where Excel doesn't treat a "null" value and a "blank/empty" cell as the same.Plus, when using something like: wshD.Cells(r, "C")the "default" property is "value", but wshD.Cells(r, "C") really describes a RANGE object, which includes properties like "Borders", "font", "background", etc.so, if you were to test if(wshD.Cells(r, "C") = "")Then Excel MIGHT say it is always "false", since a range object isn't "blank", it has LOTS of properties!Again, I've had unexpected results.Also, if the number 1 is placed in wshD.Cells(r, "C")then wshD.Cells(r, "C").Value might be 1.but if the cell previously had an alpha character placed there, then wshD.Cells(r, "C").Value might be "1"and "1" <> 1I've even had users "clear" a cell by hitting a space bar instead of the Delete or Backspace key! so, to ensure a consistent "test" for an empty cell, I trim the value, then concatenate the contents with an "X". This converts the value to a string, and if the resulting value is simply "X", then I know the cell was empty.I know, it's ugly, but it works. Next, I start with a flag set to "True".If any of the "tests" return "false", then there's no need to test further. Dim FindFlag As Boolean FindFlag = True '------------------------------------------------------------------------ If ((FindFlag) And (Trim(wshD.Cells(r, "C").Value) & "X" <> "X")) Then If (Not (wshD.Cells(r, "C") >= rngD2)) Then FindFlag = False End If End If '------------------------------------------------------------------------ If ((FindFlag) And (Trim(wshD.Cells(r, "C").Value) & "X" <> "X")) Then If (Not (wshD.Cells(r, "C") <= rngD)) Then FindFlag = False End If End If '------------------------------------------------------------------------ If ((FindFlag) And (Trim(wshD.Cells(r, "G").Value) & "X" <> "X")) Then If (Not (wshD.Cells(r, "G") = rngD)) Then FindFlag = False End If End If '------------------------------------------------------------------------ If ((FindFlag) And (Trim(wshD.Cells(r, "E").Value) & "X" <> "X")) Then If (Not (wshD.Cells(r, "E") = rngD4)) Then FindFlag = False End If End If '------------------------------------------------------------------------ If (FindFlag) 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 '------------------------------------------------------------------------ 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 4:11 AM, Karthik <karthikislegend...@gmail.com> 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. RegardsKarthik-- 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. -- 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.