Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1
Default Do Loop or If Then

Hi,
I've got the following code working in a longer code sequence but it is slow
and I was wondering whether 'If Then' statements would be better/faster.
The code is looking down a column of data and using the row number where a
condition is True to carry out further calculations.

' calculate time to 1bar pressure
Range("J3").Activate
Do
ActiveCell.Offset(rowOffset:=1).Activate
If ActiveCell.Row 6002 Then Exit Do
Loop Until ActiveCell.Value = 1
e = ActiveCell.Row
' Calculate time between engine movement and 1 bar
f = (e - s) * 0.005
If ActiveCell.Row 6002 Then f = ""

' calculate time to 2bar pressure
Do
ActiveCell.Offset(rowOffset:=1).Activate
If ActiveCell.Row 6002 Then Exit Do
Loop Until ActiveCell.Value = 2
e = ActiveCell.Row
' Calculate time between engine movement and 2 bar
g = (e - s) * 0.005
If ActiveCell.Row 6002 Then g = ""

This is repeated 10 times in total.
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,986
Default Do Loop or If Then

There probably is a more efficient way to write the procedure, but you would
have to give a little more explanation of what you are doing for anyone to
give meaningful assistance. For instance I noticed that the f changes to g
in the second procedure, which would indicate that the next iteration might
change to h, etc. I would assume that these variables would then be used
elsewhere in the code, so without understanding what the entire procedure is
attempting to accomplish, any input would be guesswork.

"RogerD" wrote:

Hi,
I've got the following code working in a longer code sequence but it is slow
and I was wondering whether 'If Then' statements would be better/faster.
The code is looking down a column of data and using the row number where a
condition is True to carry out further calculations.

' calculate time to 1bar pressure
Range("J3").Activate
Do
ActiveCell.Offset(rowOffset:=1).Activate
If ActiveCell.Row 6002 Then Exit Do
Loop Until ActiveCell.Value = 1
e = ActiveCell.Row
' Calculate time between engine movement and 1 bar
f = (e - s) * 0.005
If ActiveCell.Row 6002 Then f = ""

' calculate time to 2bar pressure
Do
ActiveCell.Offset(rowOffset:=1).Activate
If ActiveCell.Row 6002 Then Exit Do
Loop Until ActiveCell.Value = 2
e = ActiveCell.Row
' Calculate time between engine movement and 2 bar
g = (e - s) * 0.005
If ActiveCell.Row 6002 Then g = ""

This is repeated 10 times in total.

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 703
Default Do Loop or If Then

Hi

There's no need to activate cells, just work with references. It's
much faster.

Look at this:

Dim TargetRange As Range
' calculate time to 1bar pressure
Set TargetRange = Range("J3")
Do
Set TargetRange = TargetRange.Offset(1, 0)
If TargetRange.Row 6002 Then Exit Do
Loop Until TargetRange.Value = 1
e = TargetRange.Row
' Calculate time between engine movement and 1 bar
f = (e - s) * 0.005
If TargetRange.Row 6002 Then f = ""


' calculate time to 2bar pressure
Do
Set TargetRange = TargetRange.Offset(1, 0)
If TargetRange.Row 6002 Then Exit Do
Loop Until TargetRange.Value = 2
e = TargetRange.Row
' Calculate time between engine movement and 2 bar
g = (e - s) * 0.005
If TargetRange.Row 6002 Then g = ""

Regards,
Per


On 14 Okt., 00:40, RogerD wrote:
Hi,
I've got the following code working in a longer code sequence but it is slow
and I was wondering whether 'If Then' statements would be better/faster.
The code is looking down a column of data and using the row number where a
condition is True to carry out further calculations.

' calculate time to 1bar pressure
Range("J3").Activate
Do
ActiveCell.Offset(rowOffset:=1).Activate
* * If ActiveCell.Row 6002 Then Exit Do
Loop Until ActiveCell.Value = 1
e = ActiveCell.Row
' Calculate time between engine movement and 1 bar
f = (e - s) * 0.005
If ActiveCell.Row 6002 Then f = ""

' calculate time to 2bar pressure
Do
ActiveCell.Offset(rowOffset:=1).Activate
* * If ActiveCell.Row 6002 Then Exit Do
Loop Until ActiveCell.Value = 2
e = ActiveCell.Row
' Calculate time between engine movement and 2 bar
g = (e - s) * 0.005
If ActiveCell.Row 6002 Then g = ""

This is repeated 10 times in total.


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
returning back to loop check condition without completing the loop ashish128 Excel Programming 13 April 3rd 08 12:53 PM
Loop to Filter, Name Sheets. If Blank, Exit Loop ryguy7272 Excel Programming 3 February 5th 08 03:41 PM
Naming Worksheets - Loop within a loop issue klysell Excel Programming 5 March 29th 07 05:48 AM
Advancing outer Loop Based on criteria of inner loop ExcelMonkey Excel Programming 1 August 15th 05 05:23 PM
Problem adding charts using Do-Loop Until loop Chris Bromley[_2_] Excel Programming 2 May 23rd 05 01:31 PM


All times are GMT +1. The time now is 09:17 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"