View Single Post
  #1   Report Post  
Posted to microsoft.public.excel.programming
Dave Peterson Dave Peterson is offline
external usenet poster
 
Posts: 35,218
Default Query with Excel VBA Find Method

Option Explicit
Sub testme()

Dim RngToSearch As Range
Dim FirstAddress As String
Dim StrPO As String
Dim RngPO As Range

Set RngToSearch = ActiveSheet.Range("K1:k5000") '(not K:K???)

StrPO = "something"

With RngToSearch
'xlwhole or xlpart????
'it's better to explicitly use all the parms.
'otherwise you inherit the settings from the last Find
'either from the user or code!
Set RngPO = .Cells.Find(what:=StrPO, _
after:=.Cells(.Cells.Count), _
LookIn:=xlValues, _
lookat:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False, _
MatchByte:=False)

If RngPO Is Nothing Then
MsgBox "not found!"
Else
FirstAddress = RngPO.Address
Do

'code to process each occurrence
'it's not usually necessary to select this range

'look for more
Set RngPO = .FindNext(after:=RngPO)

If RngPO Is Nothing Then
Exit Do
End If

If RngPO.Address = FirstAddress Then
Exit Do
End If
Loop
End If
End With

End Sub

MarkM wrote:

Hello,

I have the following code that searches for a particular string in
column K and repeats the process until all have been found (or that's
what I intended).

In one workbook, the first instance is found at K330 with the next 8
rows containing the same value.
The address of rngPO changes after each find and after the last one
the address of rngPO changes back to K330.

Could someone please advise how I can overcome this issue?

With ActiveSheet.Range("K1:K5000")
Set rngPO = .Find(strPO, After:=Cells(1,11),
LookIn:=xlValues)
While Not (IsEmpty(rngPO))

rngPO.Select

Code to process each occurrence

Set rngPO = .FindNext(rngPO)

Wend
End With

Thank you
Mark


--

Dave Peterson