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.

Reply via email to