ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Error trapping not working (https://www.excelbanter.com/excel-programming/440221-error-trapping-not-working.html)

jmootrey[_2_]

Error trapping not working
 

Hi guys, I am running a loop to grab values from a fixed position in
relation to a unique model name. Sometimes the user asks for models that
do not exist. On this case the value (forecast) should = 0. To
accomplish this I wrote an error trap, and it works on the first
instance but if the user should ask for a second non existant model the
seleciton.find command errors out with run time code 91.
---- CODE ---
Do While model < ""
On Error GoTo notfound
Sheets("database").Columns("B:B").Select
Selection.Find(What:=model, LookAt:=xlWhole, SearchOrder:=xlByRows,
SearchDirection:=xlNext, _
MatchCase:=False).Select
forecast = ActiveCell.Offset(0, 7 + week)
continue:
Sheets("work").Range("A" & rowcount + 8) = model
Sheets("work").Range("B" & rowcount + 8) = forecast
model = Sheets("data").Range("A" & modelcount)
rowcount = rowcount + 1
modelcount = modelcount + 1
Loop
Sheets("work").Activate
End If
Exit Sub
notfound:
forecast = 0
GoTo continue
End Sub


--
jmootrey
------------------------------------------------------------------------
jmootrey's Profile: 1387
View this thread: http://www.thecodecage.com/forumz/sh...d.php?t=184562

Microsoft Office Help


Dave Peterson

Error trapping not working
 
You could try clearing the error in your notfound: portion:

notfound:
forecast = 0
err.clear
GoTo continue

But I wouldn't do this, I'd use a variable that can be examined to see if the
..find was successful:


Dim FoundCell as range

Do While model < ""
with Sheets("database")
with .Columns("B:B")
set foundcell = .cells.find(what:=model, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
end with
end with

if foundcell is nothing then
'do nothing???
forecast = -99999 'some indicator???
else
'should you check to see if it's numeric first???
forecast = foundcell.offset(0, 7 + week).value
end if

with workSheets("work")
.Range("A" & rowcount + 8) = model
if forecast = -99999 then
.range("B" & rowcount + 8) = "Invalid??"
else
.Range("B" & rowcount + 8) = forecast
end if
model = .Range("A" & modelcount)
end with

rowcount = rowcount + 1
modelcount = modelcount + 1

Loop

end sub

If you wanted the avoid the changes to the Work worksheet, then you may want:

Dim FoundCell as range

Do While model < ""
with Sheets("database")
with .Columns("B:B")
set foundcell = .cells.find(what:=model, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
end with
end with

if foundcell is nothing then
'do nothing???
forecast = -99999 'some indicator???
else
'should you check to see if it's numeric first???
forecast = foundcell.offset(0, 7 + week).value

with workSheets("work")
.Range("A" & rowcount + 8) = model
if forecast = -99999 then
.range("B" & rowcount + 8) = "Invalid??"
else
.Range("B" & rowcount + 8) = forecast
end if
model = .Range("A" & modelcount)
end with

rowcount = rowcount + 1
modelcount = modelcount + 1

end if

Loop

end sub

(Both are untested, uncompiled.)

jmootrey wrote:

Hi guys, I am running a loop to grab values from a fixed position in
relation to a unique model name. Sometimes the user asks for models that
do not exist. On this case the value (forecast) should = 0. To
accomplish this I wrote an error trap, and it works on the first
instance but if the user should ask for a second non existant model the
seleciton.find command errors out with run time code 91.
---- CODE ---
Do While model < ""
On Error GoTo notfound
Sheets("database").Columns("B:B").Select
Selection.Find(What:=model, LookAt:=xlWhole, SearchOrder:=xlByRows,
SearchDirection:=xlNext, _
MatchCase:=False).Select
forecast = ActiveCell.Offset(0, 7 + week)
continue:
Sheets("work").Range("A" & rowcount + 8) = model
Sheets("work").Range("B" & rowcount + 8) = forecast
model = Sheets("data").Range("A" & modelcount)
rowcount = rowcount + 1
modelcount = modelcount + 1
Loop
Sheets("work").Activate
End If
Exit Sub
notfound:
forecast = 0
GoTo continue
End Sub

--
jmootrey
------------------------------------------------------------------------
jmootrey's Profile: 1387
View this thread: http://www.thecodecage.com/forumz/sh...d.php?t=184562

Microsoft Office Help


--

Dave Peterson


All times are GMT +1. The time now is 03:00 AM.

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