ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   inefficient code? (https://www.excelbanter.com/excel-programming/329353-inefficient-code.html)

David

inefficient code?
 
In my code below (which runs OK), when vbNo is returned from the msgbox, I
want to skip past any comp that is Premier League. Although the code runs Ok,
after the first test for "Premier League" in each comp, the subsequent tests
are not required - How could I restructure to make the code more efficient?

PremierLeague = MsgBox("Include PremierLeague Matches?", vbYesNo)
For Each comp In Schedule
For Each Rownd In Range(comp)
'test for Premier league
For Each Item In Range(comp & "_" & Rownd)
If Left(comp, 13) = "PremierLeague" Then
If PremierLeague = vbNo Then
Exit For
End If
End If
Do stuff
Next
Next
Next

--
David

Bob Phillips[_6_]

inefficient code?
 
How about this

PremierLeague = MsgBox("Include PremierLeague Matches?", vbYesNo)
fExit = False
For Each comp In Schedule
For Each rownd In Range(comp)
'test for Premier league
For Each Item In Range(comp & "_" & rownd)
If Left(comp, 13) = "PremierLeague" Then
If PremierLeague = vbNo Then
fExit = True
Exit For
End If
End If
'Do stuff
Next Item
If fExit Then Exit For
Next rownd
If fExit Then Exit For
Next comp


also.take a look at http://www.xldynamic.com/source/xld.LeagueTable.html

--

HTH

RP
(remove nothere from the email address if mailing direct)


"David" wrote in message
...
In my code below (which runs OK), when vbNo is returned from the msgbox, I
want to skip past any comp that is Premier League. Although the code runs

Ok,
after the first test for "Premier League" in each comp, the subsequent

tests
are not required - How could I restructure to make the code more

efficient?

PremierLeague = MsgBox("Include PremierLeague Matches?", vbYesNo)
For Each comp In Schedule
For Each Rownd In Range(comp)
'test for Premier league
For Each Item In Range(comp & "_" & Rownd)
If Left(comp, 13) = "PremierLeague" Then
If PremierLeague = vbNo Then
Exit For
End If
End If
Do stuff
Next
Next
Next

--
David




JE McGimpsey

inefficient code?
 
One way:

For Each comp In Schedule
If PremierLeague = vbNo Then _
If comp.Text Like "PremierLeague*" Then Exit For
For Each Rownd in Range(comp.Text)
For Each rItem In Range(comp.Text & "_" & Rownd.Text)
'Do Stuff
Next rItem
Next Rownd
Next comp

Note that using keywords like "Item" is generally considered bad practice



In article ,
"David" wrote:

In my code below (which runs OK), when vbNo is returned from the msgbox, I
want to skip past any comp that is Premier League. Although the code runs Ok,
after the first test for "Premier League" in each comp, the subsequent tests
are not required - How could I restructure to make the code more efficient?

PremierLeague = MsgBox("Include PremierLeague Matches?", vbYesNo)
For Each comp In Schedule
For Each Rownd In Range(comp)
'test for Premier league
For Each Item In Range(comp & "_" & Rownd)
If Left(comp, 13) = "PremierLeague" Then
If PremierLeague = vbNo Then
Exit For
End If
End If
Do stuff
Next
Next
Next


David

inefficient code?
 
Thanks Bob, for a solution + extra tip
Much appreciated
--
David

David

inefficient code?
 
Thanks for your advice JE
--
David


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

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