Solved

In Excel VBA, Can I do a find on a range for all cells containing a value and have a range with just those cells found returned?

Posted on 2013-05-29
1
384 Views
Last Modified: 2013-06-06
In Excel VBA, Can I do a find on a range for all cells containing a value and have a range with just those cells found returned?

This would more than likely be a non-contiguous range.  Is this possible?  If so, how?

Let's say I wanted to find all cells in a range with the text "Joe" in them and then get a range of ONLY those cells that had that text in them.  What would the code look like for this?
0
Comment
Question by:cashonly
1 Comment
 
LVL 35

Accepted Solution

by:
[ fanpages ] earned 500 total points
ID: 39205917
Hi,

Here is one method...

Option Explicit
Public Sub Q_28142220()

' --------------------------------------------------------------------------------------------------------------
' [ http://www.experts-exchange.com/Software/Office_Productivity/Office_Suites/MS_Office/Q_28142220.html ]
'
' Question Channel: Experts Exchange > Software > Office / Productivity > Office Suites > MS Office
'
' ID:               28142220
' Question Title:   In Excel VBA, Can I do a find on a range for all cells containing a value and have a range
'                   with just those cells found returned?
' Question Asker:   cashonly                                  [ http://www.experts-exchange.com/M_1081164.html ]
' Question Dated:   2013-05-29 at 20:51:53
'
' Expert Comment:   fanpages                                   [ http://www.experts-exchange.com/M_258171.html ]
' Copyright:        (c) 2013 Clearlogic Concepts (UK) Limited                           [ http://NigelLee.info ]
' --------------------------------------------------------------------------------------------------------------

  Dim objCell                                           As Range
  Dim objStart                                          As Range
  Dim objRange                                          As Range
  
  Set objCell = ActiveSheet.UsedRange.Find("Joe")
  Set objStart = objCell
  
  While Not (objCell Is Nothing)
  
      DoEvents
      
      If (objRange Is Nothing) Then
         Set objRange = objCell
      Else
         Set objRange = Union(objRange, objCell)
      End If ' If (objRange Is Nothing) Then
      
      Set objCell = ActiveSheet.UsedRange.Find(What:="Joe", _
                                               After:=objCell)
  
      If objCell.Address = objStart.Address Then
         Set objCell = Nothing
      End If ' If objCell.Address = objStart.Address Then
      
  Wend
  
  If Not (objRange Is Nothing) Then
     objRange.Select
     Set objRange = Nothing
  End If ' If Not (objRange Is Nothing) Then
  
  Set objStart = Nothing
  Set objCell = Nothing

End Sub

Open in new window


For convenience, please see the attached workbook.

BFN,

fp.
Q-28142220.xls
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Problem: You created a new custom form in Outlook for your contacts (added fields, deleted fields, changed the layout of fields, whatever) and made it the default form for contacts. The good news is that all new contacts will utilize the new form. T…
Entering a date in Microsoft Access can be tricky. A typo can cause month and day to be shuffled, entering the day only causes an error, as does entering, say, day 31 in June. This article shows how an inputmask supported by code can help the user a…
This video shows where to find the word count, how to display it, and what it breaks down to in Microsoft Word.
The viewer will learn how to simulate a series of sales calls dependent on a single skill level and learn how to simulate a series of sales calls dependent on two skill levels. Simulating Independent Sales Calls: Enter .75 into cell C2 – “skill leve…

863 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

27 Experts available now in Live!

Get 1:1 Help Now