Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 19
Default Find doesn't find...what the !@#$

So, I have a fuction that should find the top and bottom row in column
A that has term Cat(j). However, the top works all the time and the
bottom only works when I specifically set it to A65535, otherwise its
A1. HELP:

dim Cat() as string
dim TabNames() as string
dim TopCell as Range
dim BottomCell as Range

Cat = GetCategories
TabNames = GetTabNames

for i = 0 to UBound(TabNames)
Set TopCell = Worksheets(TabNames(i)).Range("A1")
Set BottomCell = Worksheets(TabNames(i)).Range("A65535")
With Worksheets(TabNames(i)).Range("A:A")
for j = 0 to UBound(Cat)
Set TopCell
= .Find(What:=Cat(j),After:=TopCell,LookIn:=xlValues ,SearchOrder:=xlByRows,SearchDirection:=xlNext)
Set BottomCell = .Find(What:=Cat(j),After:=
BottomCell,LookIn:=xlValues,SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
next j
Next I
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,986
Default Find doesn't find...what the !@#$

Do you have a separate function for "GetTabNames" ? If not, then the Find
will only apply to the active sheet. However, you should be getting errors
before it gets to the Find statement.

"RocketMan" wrote:

So, I have a fuction that should find the top and bottom row in column
A that has term Cat(j). However, the top works all the time and the
bottom only works when I specifically set it to A65535, otherwise its
A1. HELP:

dim Cat() as string
dim TabNames() as string
dim TopCell as Range
dim BottomCell as Range

Cat = GetCategories
TabNames = GetTabNames

for i = 0 to UBound(TabNames)
Set TopCell = Worksheets(TabNames(i)).Range("A1")
Set BottomCell = Worksheets(TabNames(i)).Range("A65535")
With Worksheets(TabNames(i)).Range("A:A")
for j = 0 to UBound(Cat)
Set TopCell
= .Find(What:=Cat(j),After:=TopCell,LookIn:=xlValues ,SearchOrder:=xlByRows,SearchDirection:=xlNext)
Set BottomCell = .Find(What:=Cat(j),After:=
BottomCell,LookIn:=xlValues,SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
next j
Next I

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,510
Default Find doesn't find...what the !@#$

Hi,

With Find the After parameter is exactly that "After". It starts looking in
the next cell. If you set After reference to the last cell then the actual
search starts at the first cell in the range being searched because it loop
around.

Hope this helps.


--
Regards,

OssieMac


"RocketMan" wrote:

So, I have a fuction that should find the top and bottom row in column
A that has term Cat(j). However, the top works all the time and the
bottom only works when I specifically set it to A65535, otherwise its
A1. HELP:

dim Cat() as string
dim TabNames() as string
dim TopCell as Range
dim BottomCell as Range

Cat = GetCategories
TabNames = GetTabNames

for i = 0 to UBound(TabNames)
Set TopCell = Worksheets(TabNames(i)).Range("A1")
Set BottomCell = Worksheets(TabNames(i)).Range("A65535")
With Worksheets(TabNames(i)).Range("A:A")
for j = 0 to UBound(Cat)
Set TopCell
= .Find(What:=Cat(j),After:=TopCell,LookIn:=xlValues ,SearchOrder:=xlByRows,SearchDirection:=xlNext)
Set BottomCell = .Find(What:=Cat(j),After:=
BottomCell,LookIn:=xlValues,SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
next j
Next I

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,939
Default Find doesn't find...what the !@#$

What exactly are you trying to do? The code that you have (for both find
routines) will return the cell found by the last iteration of the loop (j) of
the final sheet (I). All of the previous iterations will do nothing. While
they may very will find something they will always be overwitten by the next
find. If that final value of Cat(j) is not found then BottomCell will be
Nothing.

My best guess is that you want to find the first and last row matching any
of your items in Cat(j). If that is the case then reply back. We can use some
temp variables in your existing code to find those for you fairly quickly...
I sitll don't get what you are doing with the i loop however.
--
HTH...

Jim Thomlinson


"RocketMan" wrote:

So, I have a fuction that should find the top and bottom row in column
A that has term Cat(j). However, the top works all the time and the
bottom only works when I specifically set it to A65535, otherwise its
A1. HELP:

dim Cat() as string
dim TabNames() as string
dim TopCell as Range
dim BottomCell as Range

Cat = GetCategories
TabNames = GetTabNames

for i = 0 to UBound(TabNames)
Set TopCell = Worksheets(TabNames(i)).Range("A1")
Set BottomCell = Worksheets(TabNames(i)).Range("A65535")
With Worksheets(TabNames(i)).Range("A:A")
for j = 0 to UBound(Cat)
Set TopCell
= .Find(What:=Cat(j),After:=TopCell,LookIn:=xlValues ,SearchOrder:=xlByRows,SearchDirection:=xlNext)
Set BottomCell = .Find(What:=Cat(j),After:=
BottomCell,LookIn:=xlValues,SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
next j
Next I

  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,510
Default Find doesn't find...what the !@#$

Hi again,

Try setting your setting your BottomCell this way. I think that you will
have less problems. the offset takes it one cell past the last data cell and
therefore the After parameter will look at the actual last cell when Previous
is also set.

There are problems when trying to assign ranges in a single line statement.
The With/End With is the way to go.


With Worksheets(TabNames(i))
Set BottomCell = .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0)
End With

--
Regards,

OssieMac


"OssieMac" wrote:

Hi,

With Find the After parameter is exactly that "After". It starts looking in
the next cell. If you set After reference to the last cell then the actual
search starts at the first cell in the range being searched because it loop
around.

Hope this helps.


--
Regards,

OssieMac


"RocketMan" wrote:

So, I have a fuction that should find the top and bottom row in column
A that has term Cat(j). However, the top works all the time and the
bottom only works when I specifically set it to A65535, otherwise its
A1. HELP:

dim Cat() as string
dim TabNames() as string
dim TopCell as Range
dim BottomCell as Range

Cat = GetCategories
TabNames = GetTabNames

for i = 0 to UBound(TabNames)
Set TopCell = Worksheets(TabNames(i)).Range("A1")
Set BottomCell = Worksheets(TabNames(i)).Range("A65535")
With Worksheets(TabNames(i)).Range("A:A")
for j = 0 to UBound(Cat)
Set TopCell
= .Find(What:=Cat(j),After:=TopCell,LookIn:=xlValues ,SearchOrder:=xlByRows,SearchDirection:=xlNext)
Set BottomCell = .Find(What:=Cat(j),After:=
BottomCell,LookIn:=xlValues,SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
next j
Next I

Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Find and Replace - delete the remainder of the text in the cell after my Find [email protected] Excel Programming 4 August 4th 07 03:39 AM
Find First Non blank cell than find column header and return that value Silver Rose Excel Worksheet Functions 10 April 30th 07 05:56 PM
find and delete duplicate entries in two columns or find and prin. campare 2 columns of numbers-find unique Excel Programming 1 November 24th 04 04:09 PM
find and delete text, find a 10-digit number and put it in a textbox Paul Excel Programming 3 November 16th 04 04:21 PM
backwards find function to find character in a string of text Ashleigh K. Excel Programming 1 January 14th 04 04:36 PM


All times are GMT +1. The time now is 11:48 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"