That worked fine for me (except I used 'UsedRange' instead of RngRange), are you sure the LastRow2 and LastCol2 variables are set?

By the way, you don't need this line:
Set RngCell = ThisWorkbook.Worksheets("RFC").Range("A2")
(the 'for each' automatically creates it each time around the loop from the range)


Going back to your original question though, you dont need the select statement if you are just looking for a particular value, its only useful if you want to perform different actions depending on which range a variable fits into.

try this instead:
VB Code:
  1. set RngRange = Usedrange '(or what you had before!)
  2. search_value = 1     '(set this to what you are looking for)
  3.  
  4. For Each RngCell In RngRange    'for each cell...
  5.   if RngCell.Value = search_value then  'look for value..
  6.     '< do your copy bit here >              '..found it, so do something
  7.    
  8.     exit for             'to exit the loop (if you only want to find the first occurence)
  9.   end if
  10. Next RngCell

I can't remember how to do the mail from Excel (I know there's two methods of doing it, one which just sends the workbook, and one which does a proper mail). My users all have Outlook installed, which allows more functionality...