ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   VB macro (https://www.excelbanter.com/excel-programming/385293-vbulletin-macro.html)

Gerrit Van Stempvoort

VB macro
 

I made a VB macro for excel. I recorded the following "Find" function
and copied it into the macro:

Cells.Find(What:="Time", After:=ActiveCell, LookIn:=xlFormulas,
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:=False, SearchFormat:=False).Activate

When I run the macro I got an error message:
"Error 91
Objectvariable or blockvariable With not defined."

When I replace "LookAt:=xlWhole" by "LookAt:=xlPart", then the macro
runs well, but will find the wrong cell.
What's wrong?
I don't use any "With" function in the macro.

Thanks beforehand for your help.


*** Sent via Developersdex http://www.developersdex.com ***

Dave Peterson

VB macro
 
I think you'd be better served to use a variable to represent that foundcell.
Then you could check to see if the find was successful:

Dim FoundCell as range
set foundcell = cells.find(.....) 'drop the .activate
if foundcell is nothing then
msgbox "Not found
else
msgbox "found at: " & foundcell.address
end if

===
If your find fails, then you can't activate that cell--so your original code
blows up.



Gerrit Van Stempvoort wrote:

I made a VB macro for excel. I recorded the following "Find" function
and copied it into the macro:

Cells.Find(What:="Time", After:=ActiveCell, LookIn:=xlFormulas,
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:=False, SearchFormat:=False).Activate

When I run the macro I got an error message:
"Error 91
Objectvariable or blockvariable With not defined."

When I replace "LookAt:=xlWhole" by "LookAt:=xlPart", then the macro
runs well, but will find the wrong cell.
What's wrong?
I don't use any "With" function in the macro.

Thanks beforehand for your help.

*** Sent via Developersdex http://www.developersdex.com ***


--

Dave Peterson

Tom Ogilvy

VB macro
 
Your getting the error because it doesn't find a cell and then tries to
activate NOTHING. To avoid that:

Dim rng as Range
set rng = Cells.Find(What:="Time", _
After:=ActiveCell, _
LookIn:=xlFormulas, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False, _
SearchFormat:=False)
if rng is nothing then
msgbox "Time was not found"
else
rng.Select
msgbox "Found at " & rng.Address
End if

Make sure the cell you want to fine only contains Time - no leading or
trailing spaces or other characters. Check it with a formula

Assume it is in cell B9. In another cell
=len(B9)

If that doesn't return 4, it contains other characters.

--
Regards,
Tom Ogilvy


"Gerrit Van Stempvoort" wrote:


I made a VB macro for excel. I recorded the following "Find" function
and copied it into the macro:

Cells.Find(What:="Time", After:=ActiveCell, LookIn:=xlFormulas,
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:=False, SearchFormat:=False).Activate

When I run the macro I got an error message:
"Error 91
Objectvariable or blockvariable With not defined."

When I replace "LookAt:=xlWhole" by "LookAt:=xlPart", then the macro
runs well, but will find the wrong cell.
What's wrong?
I don't use any "With" function in the macro.

Thanks beforehand for your help.


*** Sent via Developersdex http://www.developersdex.com ***



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

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com