Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2
Default Avoiding Redundancy (.Find Method)

While somewhat experienced with VBA I am not so experienced working
with Excel objects.

My objective is to loop through multiple worksheets (currently 150+),
find a keyword on each worksheet, and return the value in the cell two
columns to the right. The keyword will exist zero or one times per
sheet.

After studying examples I was able to piece together the following
code, which works. But, I have to think the redundant call to .Find is
unnecessary, as commented in the remark midway.

Any suggestions to improve this? Many thanks.

' ------------ VBA CODE BEGIN ------------
Sub FindInAllSheets()
Const D As String = ";"
Dim sh As Worksheet
Dim r1 As Range

For Each sh In Application.ThisWorkbook.Worksheets
Debug.Print sh.Name & D;
Set r1 = Nothing
sh.Activate
' CAN I AVOID CALLING .Find TWICE HERE?
If Not sh.Cells.Find([parameters]) Is Nothing Then
sh.Cells.Find([parameters]).Activate
Set r1 = Selection
End If
If Not r1 Is Nothing Then
Debug.Print r1.Offset(0, 2).Value
Else
Debug.Print "not found"
End If
Next sh
Worksheets(1).Activate
Set r1 = Nothing
End Sub
' ------------ VBA CODE END ------------

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 30
Default Avoiding Redundancy (.Find Method)

Hi Smartin,

Hope the following code is what you want.

Sub FindInAllSheets()
Const D As String = ";"
Dim sh As Worksheet
Dim r1 As Range

For Each sh In Application.ThisWorkbook.Worksheets
Debug.Print sh.Name & D;
Set r1 = Nothing
sh.Activate

Set r1 = sh.Cells.Find([Parameters])

' CAN I AVOID CALLING .Find TWICE HERE?
If Not r1 Is Nothing Then
'value found do something
Debug.Print r1.Offset(0, 2).Value
Else
Debug.Print "not found"
End If
Next sh
Worksheets(1).Activate
Set r1 = Nothing
End Sub

If you need some more tweaking, please write back.
--
Anant


"Smartin" wrote:

While somewhat experienced with VBA I am not so experienced working
with Excel objects.

My objective is to loop through multiple worksheets (currently 150+),
find a keyword on each worksheet, and return the value in the cell two
columns to the right. The keyword will exist zero or one times per
sheet.

After studying examples I was able to piece together the following
code, which works. But, I have to think the redundant call to .Find is
unnecessary, as commented in the remark midway.

Any suggestions to improve this? Many thanks.

' ------------ VBA CODE BEGIN ------------
Sub FindInAllSheets()
Const D As String = ";"
Dim sh As Worksheet
Dim r1 As Range

For Each sh In Application.ThisWorkbook.Worksheets
Debug.Print sh.Name & D;
Set r1 = Nothing
sh.Activate
' CAN I AVOID CALLING .Find TWICE HERE?
If Not sh.Cells.Find([parameters]) Is Nothing Then
sh.Cells.Find([parameters]).Activate
Set r1 = Selection
End If
If Not r1 Is Nothing Then
Debug.Print r1.Offset(0, 2).Value
Else
Debug.Print "not found"
End If
Next sh
Worksheets(1).Activate
Set r1 = Nothing
End Sub
' ------------ VBA CODE END ------------


  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2
Default Avoiding Redundancy (.Find Method)

Yes, that's perfect. Thanks again, Anant.

On Sep 29, 10:01 pm, Anant Basant
wrote:
Hi Smartin,

Hope the following code is what you want.

Sub FindInAllSheets()
Const D As String = ";"
Dim sh As Worksheet
Dim r1 As Range

For Each sh In Application.ThisWorkbook.Worksheets
Debug.Print sh.Name & D;
Set r1 = Nothing
sh.Activate

Set r1 = sh.Cells.Find([Parameters])

' CAN I AVOID CALLING .Find TWICE HERE?
If Not r1 Is Nothing Then
'value found do something
Debug.Print r1.Offset(0, 2).Value
Else
Debug.Print "not found"
End If
Next sh
Worksheets(1).Activate
Set r1 = Nothing
End Sub

If you need some more tweaking, please write back.
--
Anant

"Smartin" wrote:
While somewhat experienced with VBA I am not so experienced working
with Excel objects.


My objective is to loop through multiple worksheets (currently 150+),
find a keyword on each worksheet, and return the value in the cell two
columns to the right. The keyword will exist zero or one times per
sheet.


After studying examples I was able to piece together the following
code, which works. But, I have to think the redundant call to .Find is
unnecessary, as commented in the remark midway.


Any suggestions to improve this? Many thanks.


' ------------ VBA CODE BEGIN ------------
Sub FindInAllSheets()
Const D As String = ";"
Dim sh As Worksheet
Dim r1 As Range


For Each sh In Application.ThisWorkbook.Worksheets
Debug.Print sh.Name & D;
Set r1 = Nothing
sh.Activate
' CAN I AVOID CALLING .Find TWICE HERE?
If Not sh.Cells.Find([parameters]) Is Nothing Then
sh.Cells.Find([parameters]).Activate
Set r1 = Selection
End If
If Not r1 Is Nothing Then
Debug.Print r1.Offset(0, 2).Value
Else
Debug.Print "not found"
End If
Next sh
Worksheets(1).Activate
Set r1 = Nothing
End Sub
' ------------ VBA CODE END ------------



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
xls vba find method to find row that contains the current date RCranston Excel Programming 3 March 28th 07 03:59 PM
Using variables to make a date and using find method to find that. KyWilde Excel Programming 2 April 21st 05 09:43 PM
How do I correct a cyclic redundancy check error Ramakrishnan Rajamani Excel Discussion (Misc queries) 0 March 25th 05 06:01 PM
assignment redundancy check james Excel Discussion (Misc queries) 1 January 19th 05 10:53 PM
cyclic redundancy check ron Excel Programming 1 October 15th 03 01:03 AM


All times are GMT +1. The time now is 07:33 PM.

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

About Us

"It's about Microsoft Excel"