Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 43
Default Basic VBA questions....

1. Do you have to "select" a worksheet or cell (or range of cells) before you
can copy a cell (or range of cells) from that worksheet ?
2. Do you have to "select" a worksheet or cell before you can assign a
formula to a cell in that worksheet ?
3. Do you have to "select" a row in a worksheet before you delete that row ?

These may seem like very basic VBA questions....and in reality they
are....what I am trying to get at is efficiency. I have some code in a
workbook that pulls data from a SQL table on an AS/400 system and them
performs several calcuations, sorts, etc. on that data. When I run this
routine for all 17 locations at one time, it takes nearly 10 minutes to run
to completion. What I'm really after here is suggestions on how to make my
code more efficient....what can I do to speed up this process ?

Thanks !

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,494
Default Basic VBA questions....

other more knowledgeable will probably respond, but to answer all 3 questions,
no.

in fact, it's preferable not to,.

make sure you turn off screen updating and set calculation to manual while your
code executes and then set calculation back to automatic when it's finished.

--


Gary


"Eric @ BP-EVV" wrote in message
...
1. Do you have to "select" a worksheet or cell (or range of cells) before you
can copy a cell (or range of cells) from that worksheet ?
2. Do you have to "select" a worksheet or cell before you can assign a
formula to a cell in that worksheet ?
3. Do you have to "select" a row in a worksheet before you delete that row ?

These may seem like very basic VBA questions....and in reality they
are....what I am trying to get at is efficiency. I have some code in a
workbook that pulls data from a SQL table on an AS/400 system and them
performs several calcuations, sorts, etc. on that data. When I run this
routine for all 17 locations at one time, it takes nearly 10 minutes to run
to completion. What I'm really after here is suggestions on how to make my
code more efficient....what can I do to speed up this process ?

Thanks !



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 789
Default Basic VBA questions....

Hi
No to all three.
If tou use the macro recorder you typically get

Something.Select
Selection.DoSomething

You can always cut out the middle bit

Something.DoSomething

Have a look at your code and see how many of these selections you can
remove.
regards
Paul


On Sep 16, 3:21*pm, Eric @ BP-EVV
wrote:
1. Do you have to "select" a worksheet or cell (or range of cells) before you
can copy a cell (or range of cells) from that worksheet ?
2. Do you have to "select" a worksheet or cell before you can assign a
formula to a cell in that worksheet ?
3. Do you have to "select" a row in a worksheet before you delete that row ?

These may seem like very basic VBA questions....and in reality they
are....what I am trying to get at is efficiency. *I have some code in a
workbook that pulls data from a SQL table on an AS/400 system and them
performs several calcuations, sorts, etc. on that data. When I run this
routine for all 17 locations at one time, it takes nearly 10 minutes to run
to completion. *What I'm really after here is suggestions on how to make my
code more efficient....what can I do to speed up this process ?

Thanks !


  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 43
Default Basic VBA questions....

Gary - thanks for the reply.... I have already got screen updating turned
off, as well as having set calculation to manual. I'm sure I can elminate
some code by not selecting cells first, which I would think can only help the
speed of this routine.

Does anyone else have other suggestions for improving speed or efficiency ?

Thanks !

"Gary Keramidas" wrote:

other more knowledgeable will probably respond, but to answer all 3 questions,
no.

in fact, it's preferable not to,.

make sure you turn off screen updating and set calculation to manual while your
code executes and then set calculation back to automatic when it's finished.

--


Gary


"Eric @ BP-EVV" wrote in message
...
1. Do you have to "select" a worksheet or cell (or range of cells) before you
can copy a cell (or range of cells) from that worksheet ?
2. Do you have to "select" a worksheet or cell before you can assign a
formula to a cell in that worksheet ?
3. Do you have to "select" a row in a worksheet before you delete that row ?

These may seem like very basic VBA questions....and in reality they
are....what I am trying to get at is efficiency. I have some code in a
workbook that pulls data from a SQL table on an AS/400 system and them
performs several calcuations, sorts, etc. on that data. When I run this
routine for all 17 locations at one time, it takes nearly 10 minutes to run
to completion. What I'm really after here is suggestions on how to make my
code more efficient....what can I do to speed up this process ?

Thanks !




  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default Basic VBA questions....

#1. Nope.

dim RngToCopy as range
dim DestCell as range

set rngtocopy = worksheets("Sheet999").range("x1:z99")
set destcell = worksheets("sheet888").range("u71")

rngtocopy.copy _
destination:=destcell

#2. Nope.

worksheets("sheet999").range("z99").value = "what you want here"

#3. Nope.

worksheets("sheet999").rows(17).delete


==========
I'd turn calculation to manual, then do the work, then change the calculation
back to whatever it was before.

In fact, there are a few things that can slow down macros. I do this kind of
thing to speed them up:

Option Explicit
Sub testme()

Dim CalcMode As Long
Dim ViewMode As Long

Application.ScreenUpdating = False

CalcMode = Application.Calculation
Application.Calculation = xlCalculationManual

ViewMode = ActiveWindow.View
ActiveWindow.View = xlNormalView

ActiveSheet.DisplayPageBreaks = False

'do the work

'put things back to what they were
Application.Calculation = CalcMode
ActiveWindow.View = ViewMode

End Sub

Your code will replace the "'do the work" line.

When/if you're hiding rows/columns, excel wants to figure out where to draw
those lines each time you change the layout.


Eric @ BP-EVV wrote:

1. Do you have to "select" a worksheet or cell (or range of cells) before you
can copy a cell (or range of cells) from that worksheet ?
2. Do you have to "select" a worksheet or cell before you can assign a
formula to a cell in that worksheet ?
3. Do you have to "select" a row in a worksheet before you delete that row ?

These may seem like very basic VBA questions....and in reality they
are....what I am trying to get at is efficiency. I have some code in a
workbook that pulls data from a SQL table on an AS/400 system and them
performs several calcuations, sorts, etc. on that data. When I run this
routine for all 17 locations at one time, it takes nearly 10 minutes to run
to completion. What I'm really after here is suggestions on how to make my
code more efficient....what can I do to speed up this process ?

Thanks !


--

Dave Peterson
  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default Basic VBA questions....

#2. Nope.

worksheets("sheet999").range("z99").formula = "=sum(a:a)"

(using a formula)

Dave Peterson wrote:

#1. Nope.

dim RngToCopy as range
dim DestCell as range

set rngtocopy = worksheets("Sheet999").range("x1:z99")
set destcell = worksheets("sheet888").range("u71")

rngtocopy.copy _
destination:=destcell

#2. Nope.

worksheets("sheet999").range("z99").value = "what you want here"

#3. Nope.

worksheets("sheet999").rows(17).delete

==========
I'd turn calculation to manual, then do the work, then change the calculation
back to whatever it was before.

In fact, there are a few things that can slow down macros. I do this kind of
thing to speed them up:

Option Explicit
Sub testme()

Dim CalcMode As Long
Dim ViewMode As Long

Application.ScreenUpdating = False

CalcMode = Application.Calculation
Application.Calculation = xlCalculationManual

ViewMode = ActiveWindow.View
ActiveWindow.View = xlNormalView

ActiveSheet.DisplayPageBreaks = False

'do the work

'put things back to what they were
Application.Calculation = CalcMode
ActiveWindow.View = ViewMode

End Sub

Your code will replace the "'do the work" line.

When/if you're hiding rows/columns, excel wants to figure out where to draw
those lines each time you change the layout.

Eric @ BP-EVV wrote:

1. Do you have to "select" a worksheet or cell (or range of cells) before you
can copy a cell (or range of cells) from that worksheet ?
2. Do you have to "select" a worksheet or cell before you can assign a
formula to a cell in that worksheet ?
3. Do you have to "select" a row in a worksheet before you delete that row ?

These may seem like very basic VBA questions....and in reality they
are....what I am trying to get at is efficiency. I have some code in a
workbook that pulls data from a SQL table on an AS/400 system and them
performs several calcuations, sorts, etc. on that data. When I run this
routine for all 17 locations at one time, it takes nearly 10 minutes to run
to completion. What I'm really after here is suggestions on how to make my
code more efficient....what can I do to speed up this process ?

Thanks !


--

Dave Peterson


--

Dave Peterson
  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 43
Default Basic VBA questions....

Based on your reply, Dave, along with those of Paul and Don, it's
unanimous....I'm an amateur at this VBA coding stuff ! :-) None the less,
this forum has always been of great help to me and I am grateful for the
responses I get to my questions. I will implement the suggestions from y'all
and see how my routine's performance changes.

One more question: what does the "Option Explicit" do / mean ?

Thanks again !


"Dave Peterson" wrote:

#1. Nope.

dim RngToCopy as range
dim DestCell as range

set rngtocopy = worksheets("Sheet999").range("x1:z99")
set destcell = worksheets("sheet888").range("u71")

rngtocopy.copy _
destination:=destcell

#2. Nope.

worksheets("sheet999").range("z99").value = "what you want here"

#3. Nope.

worksheets("sheet999").rows(17).delete


==========
I'd turn calculation to manual, then do the work, then change the calculation
back to whatever it was before.

In fact, there are a few things that can slow down macros. I do this kind of
thing to speed them up:

Option Explicit
Sub testme()

Dim CalcMode As Long
Dim ViewMode As Long

Application.ScreenUpdating = False

CalcMode = Application.Calculation
Application.Calculation = xlCalculationManual

ViewMode = ActiveWindow.View
ActiveWindow.View = xlNormalView

ActiveSheet.DisplayPageBreaks = False

'do the work

'put things back to what they were
Application.Calculation = CalcMode
ActiveWindow.View = ViewMode

End Sub

Your code will replace the "'do the work" line.

When/if you're hiding rows/columns, excel wants to figure out where to draw
those lines each time you change the layout.


Eric @ BP-EVV wrote:

1. Do you have to "select" a worksheet or cell (or range of cells) before you
can copy a cell (or range of cells) from that worksheet ?
2. Do you have to "select" a worksheet or cell before you can assign a
formula to a cell in that worksheet ?
3. Do you have to "select" a row in a worksheet before you delete that row ?

These may seem like very basic VBA questions....and in reality they
are....what I am trying to get at is efficiency. I have some code in a
workbook that pulls data from a SQL table on an AS/400 system and them
performs several calcuations, sorts, etc. on that data. When I run this
routine for all 17 locations at one time, it takes nearly 10 minutes to run
to completion. What I'm really after here is suggestions on how to make my
code more efficient....what can I do to speed up this process ?

Thanks !


--

Dave Peterson

  #9   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,986
Default Basic VBA questions....

Option Explicit means that all of your variables have to be declared. If
they are not, the first one you try to use that is not declared will generate
an error. It also helps you to catch typos because VBA will see the typo as
a new undeclared variable and send you a message. For short procedures it is
not that important, but it can save you a lot of grief in long and complex
procedures.

"Eric @ BP-EVV" wrote:

Based on your reply, Dave, along with those of Paul and Don, it's
unanimous....I'm an amateur at this VBA coding stuff ! :-) None the less,
this forum has always been of great help to me and I am grateful for the
responses I get to my questions. I will implement the suggestions from y'all
and see how my routine's performance changes.

One more question: what does the "Option Explicit" do / mean ?

Thanks again !


"Dave Peterson" wrote:

#1. Nope.

dim RngToCopy as range
dim DestCell as range

set rngtocopy = worksheets("Sheet999").range("x1:z99")
set destcell = worksheets("sheet888").range("u71")

rngtocopy.copy _
destination:=destcell

#2. Nope.

worksheets("sheet999").range("z99").value = "what you want here"

#3. Nope.

worksheets("sheet999").rows(17).delete


==========
I'd turn calculation to manual, then do the work, then change the calculation
back to whatever it was before.

In fact, there are a few things that can slow down macros. I do this kind of
thing to speed them up:

Option Explicit
Sub testme()

Dim CalcMode As Long
Dim ViewMode As Long

Application.ScreenUpdating = False

CalcMode = Application.Calculation
Application.Calculation = xlCalculationManual

ViewMode = ActiveWindow.View
ActiveWindow.View = xlNormalView

ActiveSheet.DisplayPageBreaks = False

'do the work

'put things back to what they were
Application.Calculation = CalcMode
ActiveWindow.View = ViewMode

End Sub

Your code will replace the "'do the work" line.

When/if you're hiding rows/columns, excel wants to figure out where to draw
those lines each time you change the layout.


Eric @ BP-EVV wrote:

1. Do you have to "select" a worksheet or cell (or range of cells) before you
can copy a cell (or range of cells) from that worksheet ?
2. Do you have to "select" a worksheet or cell before you can assign a
formula to a cell in that worksheet ?
3. Do you have to "select" a row in a worksheet before you delete that row ?

These may seem like very basic VBA questions....and in reality they
are....what I am trying to get at is efficiency. I have some code in a
workbook that pulls data from a SQL table on an AS/400 system and them
performs several calcuations, sorts, etc. on that data. When I run this
routine for all 17 locations at one time, it takes nearly 10 minutes to run
to completion. What I'm really after here is suggestions on how to make my
code more efficient....what can I do to speed up this process ?

Thanks !


--

Dave Peterson

  #10   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 43
Default Basic VBA questions....

Thanks for that information....it sounds like I need to be using "Option
Explicit" for future coding projects.

"JLGWhiz" wrote:

Option Explicit means that all of your variables have to be declared. If
they are not, the first one you try to use that is not declared will generate
an error. It also helps you to catch typos because VBA will see the typo as
a new undeclared variable and send you a message. For short procedures it is
not that important, but it can save you a lot of grief in long and complex
procedures.

"Eric @ BP-EVV" wrote:

Based on your reply, Dave, along with those of Paul and Don, it's
unanimous....I'm an amateur at this VBA coding stuff ! :-) None the less,
this forum has always been of great help to me and I am grateful for the
responses I get to my questions. I will implement the suggestions from y'all
and see how my routine's performance changes.

One more question: what does the "Option Explicit" do / mean ?

Thanks again !


"Dave Peterson" wrote:

#1. Nope.

dim RngToCopy as range
dim DestCell as range

set rngtocopy = worksheets("Sheet999").range("x1:z99")
set destcell = worksheets("sheet888").range("u71")

rngtocopy.copy _
destination:=destcell

#2. Nope.

worksheets("sheet999").range("z99").value = "what you want here"

#3. Nope.

worksheets("sheet999").rows(17).delete


==========
I'd turn calculation to manual, then do the work, then change the calculation
back to whatever it was before.

In fact, there are a few things that can slow down macros. I do this kind of
thing to speed them up:

Option Explicit
Sub testme()

Dim CalcMode As Long
Dim ViewMode As Long

Application.ScreenUpdating = False

CalcMode = Application.Calculation
Application.Calculation = xlCalculationManual

ViewMode = ActiveWindow.View
ActiveWindow.View = xlNormalView

ActiveSheet.DisplayPageBreaks = False

'do the work

'put things back to what they were
Application.Calculation = CalcMode
ActiveWindow.View = ViewMode

End Sub

Your code will replace the "'do the work" line.

When/if you're hiding rows/columns, excel wants to figure out where to draw
those lines each time you change the layout.


Eric @ BP-EVV wrote:

1. Do you have to "select" a worksheet or cell (or range of cells) before you
can copy a cell (or range of cells) from that worksheet ?
2. Do you have to "select" a worksheet or cell before you can assign a
formula to a cell in that worksheet ?
3. Do you have to "select" a row in a worksheet before you delete that row ?

These may seem like very basic VBA questions....and in reality they
are....what I am trying to get at is efficiency. I have some code in a
workbook that pulls data from a SQL table on an AS/400 system and them
performs several calcuations, sorts, etc. on that data. When I run this
routine for all 17 locations at one time, it takes nearly 10 minutes to run
to completion. What I'm really after here is suggestions on how to make my
code more efficient....what can I do to speed up this process ?

Thanks !

--

Dave Peterson



  #11   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default Basic VBA questions....

I think it's very useful for short code, too.

As well as making typos easier to find, if you declare your variables correctly:

Dim wks as worksheet
not
dim wks as variant 'or as object

Then you'll get VBAs helpful intellisense--that's the popup that you see after
typing the dot in:

wks.

You'll see a list of all the properties and methods that you could use.

JLGWhiz wrote:

Option Explicit means that all of your variables have to be declared. If
they are not, the first one you try to use that is not declared will generate
an error. It also helps you to catch typos because VBA will see the typo as
a new undeclared variable and send you a message. For short procedures it is
not that important, but it can save you a lot of grief in long and complex
procedures.

"Eric @ BP-EVV" wrote:

Based on your reply, Dave, along with those of Paul and Don, it's
unanimous....I'm an amateur at this VBA coding stuff ! :-) None the less,
this forum has always been of great help to me and I am grateful for the
responses I get to my questions. I will implement the suggestions from y'all
and see how my routine's performance changes.

One more question: what does the "Option Explicit" do / mean ?

Thanks again !


"Dave Peterson" wrote:

#1. Nope.

dim RngToCopy as range
dim DestCell as range

set rngtocopy = worksheets("Sheet999").range("x1:z99")
set destcell = worksheets("sheet888").range("u71")

rngtocopy.copy _
destination:=destcell

#2. Nope.

worksheets("sheet999").range("z99").value = "what you want here"

#3. Nope.

worksheets("sheet999").rows(17).delete


==========
I'd turn calculation to manual, then do the work, then change the calculation
back to whatever it was before.

In fact, there are a few things that can slow down macros. I do this kind of
thing to speed them up:

Option Explicit
Sub testme()

Dim CalcMode As Long
Dim ViewMode As Long

Application.ScreenUpdating = False

CalcMode = Application.Calculation
Application.Calculation = xlCalculationManual

ViewMode = ActiveWindow.View
ActiveWindow.View = xlNormalView

ActiveSheet.DisplayPageBreaks = False

'do the work

'put things back to what they were
Application.Calculation = CalcMode
ActiveWindow.View = ViewMode

End Sub

Your code will replace the "'do the work" line.

When/if you're hiding rows/columns, excel wants to figure out where to draw
those lines each time you change the layout.


Eric @ BP-EVV wrote:

1. Do you have to "select" a worksheet or cell (or range of cells) before you
can copy a cell (or range of cells) from that worksheet ?
2. Do you have to "select" a worksheet or cell before you can assign a
formula to a cell in that worksheet ?
3. Do you have to "select" a row in a worksheet before you delete that row ?

These may seem like very basic VBA questions....and in reality they
are....what I am trying to get at is efficiency. I have some code in a
workbook that pulls data from a SQL table on an AS/400 system and them
performs several calcuations, sorts, etc. on that data. When I run this
routine for all 17 locations at one time, it takes nearly 10 minutes to run
to completion. What I'm really after here is suggestions on how to make my
code more efficient....what can I do to speed up this process ?

Thanks !

--

Dave Peterson


--

Dave Peterson
  #12   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,934
Default Basic VBA questions....

You can turn it on automatically for all your code windows by clicking
Tools/Options on the VB editor's menu bar and then putting a check mark in
the Code Setting checkbox labeled "Require Variable Declaration". Note, this
only affects new (empty) code windows that you call up... if you have
existing code windows with code already in them, you have to add the Option
Explicit manually to them.

--
Rick (MVP - Excel)


"Eric @ BP-EVV" wrote in message
...
Thanks for that information....it sounds like I need to be using "Option
Explicit" for future coding projects.

"JLGWhiz" wrote:

Option Explicit means that all of your variables have to be declared. If
they are not, the first one you try to use that is not declared will
generate
an error. It also helps you to catch typos because VBA will see the typo
as
a new undeclared variable and send you a message. For short procedures
it is
not that important, but it can save you a lot of grief in long and
complex
procedures.

"Eric @ BP-EVV" wrote:

Based on your reply, Dave, along with those of Paul and Don, it's
unanimous....I'm an amateur at this VBA coding stuff ! :-) None the
less,
this forum has always been of great help to me and I am grateful for
the
responses I get to my questions. I will implement the suggestions from
y'all
and see how my routine's performance changes.

One more question: what does the "Option Explicit" do / mean ?

Thanks again !


"Dave Peterson" wrote:

#1. Nope.

dim RngToCopy as range
dim DestCell as range

set rngtocopy = worksheets("Sheet999").range("x1:z99")
set destcell = worksheets("sheet888").range("u71")

rngtocopy.copy _
destination:=destcell

#2. Nope.

worksheets("sheet999").range("z99").value = "what you want here"

#3. Nope.

worksheets("sheet999").rows(17).delete


==========
I'd turn calculation to manual, then do the work, then change the
calculation
back to whatever it was before.

In fact, there are a few things that can slow down macros. I do this
kind of
thing to speed them up:

Option Explicit
Sub testme()

Dim CalcMode As Long
Dim ViewMode As Long

Application.ScreenUpdating = False

CalcMode = Application.Calculation
Application.Calculation = xlCalculationManual

ViewMode = ActiveWindow.View
ActiveWindow.View = xlNormalView

ActiveSheet.DisplayPageBreaks = False

'do the work

'put things back to what they were
Application.Calculation = CalcMode
ActiveWindow.View = ViewMode

End Sub

Your code will replace the "'do the work" line.

When/if you're hiding rows/columns, excel wants to figure out where
to draw
those lines each time you change the layout.


Eric @ BP-EVV wrote:

1. Do you have to "select" a worksheet or cell (or range of cells)
before you
can copy a cell (or range of cells) from that worksheet ?
2. Do you have to "select" a worksheet or cell before you can
assign a
formula to a cell in that worksheet ?
3. Do you have to "select" a row in a worksheet before you delete
that row ?

These may seem like very basic VBA questions....and in reality they
are....what I am trying to get at is efficiency. I have some code
in a
workbook that pulls data from a SQL table on an AS/400 system and
them
performs several calcuations, sorts, etc. on that data. When I run
this
routine for all 17 locations at one time, it takes nearly 10
minutes to run
to completion. What I'm really after here is suggestions on how to
make my
code more efficient....what can I do to speed up this process ?

Thanks !

--

Dave Peterson


  #13   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 43
Default Basic VBA questions....

Just for the record, I have added "Option Explicit" and the compiler found 3
variables I had not defined...I fixed that...I commented out all the
unnecessary select statements, and revamped my delete, copy and paste type
statements.

I timed the performance with a stop watch before and after making these
changes, with the same "other applications" open on my computer and the
performance did improve a little....went from 9 minutes 40 seconds down to 9
minutes 20 seconds, which equates to almost a 3.5 % increase in speed....I
was hoping for more, so now I am going to study hard on the use of
calculation statements in the routine. I have it turned to manual at the
beginning...I need to make sure I am only forcing the recalculation when
absolutely necessary.

"Dave Peterson" wrote:

I think it's very useful for short code, too.

As well as making typos easier to find, if you declare your variables correctly:

Dim wks as worksheet
not
dim wks as variant 'or as object

Then you'll get VBAs helpful intellisense--that's the popup that you see after
typing the dot in:

wks.

You'll see a list of all the properties and methods that you could use.

JLGWhiz wrote:

Option Explicit means that all of your variables have to be declared. If
they are not, the first one you try to use that is not declared will generate
an error. It also helps you to catch typos because VBA will see the typo as
a new undeclared variable and send you a message. For short procedures it is
not that important, but it can save you a lot of grief in long and complex
procedures.

"Eric @ BP-EVV" wrote:

Based on your reply, Dave, along with those of Paul and Don, it's
unanimous....I'm an amateur at this VBA coding stuff ! :-) None the less,
this forum has always been of great help to me and I am grateful for the
responses I get to my questions. I will implement the suggestions from y'all
and see how my routine's performance changes.

One more question: what does the "Option Explicit" do / mean ?

Thanks again !


"Dave Peterson" wrote:

#1. Nope.

dim RngToCopy as range
dim DestCell as range

set rngtocopy = worksheets("Sheet999").range("x1:z99")
set destcell = worksheets("sheet888").range("u71")

rngtocopy.copy _
destination:=destcell

#2. Nope.

worksheets("sheet999").range("z99").value = "what you want here"

#3. Nope.

worksheets("sheet999").rows(17).delete


==========
I'd turn calculation to manual, then do the work, then change the calculation
back to whatever it was before.

In fact, there are a few things that can slow down macros. I do this kind of
thing to speed them up:

Option Explicit
Sub testme()

Dim CalcMode As Long
Dim ViewMode As Long

Application.ScreenUpdating = False

CalcMode = Application.Calculation
Application.Calculation = xlCalculationManual

ViewMode = ActiveWindow.View
ActiveWindow.View = xlNormalView

ActiveSheet.DisplayPageBreaks = False

'do the work

'put things back to what they were
Application.Calculation = CalcMode
ActiveWindow.View = ViewMode

End Sub

Your code will replace the "'do the work" line.

When/if you're hiding rows/columns, excel wants to figure out where to draw
those lines each time you change the layout.


Eric @ BP-EVV wrote:

1. Do you have to "select" a worksheet or cell (or range of cells) before you
can copy a cell (or range of cells) from that worksheet ?
2. Do you have to "select" a worksheet or cell before you can assign a
formula to a cell in that worksheet ?
3. Do you have to "select" a row in a worksheet before you delete that row ?

These may seem like very basic VBA questions....and in reality they
are....what I am trying to get at is efficiency. I have some code in a
workbook that pulls data from a SQL table on an AS/400 system and them
performs several calcuations, sorts, etc. on that data. When I run this
routine for all 17 locations at one time, it takes nearly 10 minutes to run
to completion. What I'm really after here is suggestions on how to make my
code more efficient....what can I do to speed up this process ?

Thanks !

--

Dave Peterson


--

Dave Peterson

  #14   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default Basic VBA questions....

One of the best things that comes out of your clean up isn't the (slightly)
improved execution speed. I think that you'll find the code easier to
understand and easier to update.

Those worksheets().select and range().selects can get really confusing really
fast.

And some things that may improve speed:

Option Explicit
Sub testme()

Dim CalcMode As Long
Dim ViewMode As Long

Application.ScreenUpdating = False

CalcMode = Application.Calculation
Application.Calculation = xlCalculationManual

ViewMode = ActiveWindow.View
ActiveWindow.View = xlNormalView

ActiveSheet.DisplayPageBreaks = False

'do the work

'put things back to what they were
Application.Calculation = CalcMode
ActiveWindow.View = ViewMode

End Sub

Eric @ BP-EVV wrote:

Just for the record, I have added "Option Explicit" and the compiler found 3
variables I had not defined...I fixed that...I commented out all the
unnecessary select statements, and revamped my delete, copy and paste type
statements.

I timed the performance with a stop watch before and after making these
changes, with the same "other applications" open on my computer and the
performance did improve a little....went from 9 minutes 40 seconds down to 9
minutes 20 seconds, which equates to almost a 3.5 % increase in speed....I
was hoping for more, so now I am going to study hard on the use of
calculation statements in the routine. I have it turned to manual at the
beginning...I need to make sure I am only forcing the recalculation when
absolutely necessary.

"Dave Peterson" wrote:

I think it's very useful for short code, too.

As well as making typos easier to find, if you declare your variables correctly:

Dim wks as worksheet
not
dim wks as variant 'or as object

Then you'll get VBAs helpful intellisense--that's the popup that you see after
typing the dot in:

wks.

You'll see a list of all the properties and methods that you could use.

JLGWhiz wrote:

Option Explicit means that all of your variables have to be declared. If
they are not, the first one you try to use that is not declared will generate
an error. It also helps you to catch typos because VBA will see the typo as
a new undeclared variable and send you a message. For short procedures it is
not that important, but it can save you a lot of grief in long and complex
procedures.

"Eric @ BP-EVV" wrote:

Based on your reply, Dave, along with those of Paul and Don, it's
unanimous....I'm an amateur at this VBA coding stuff ! :-) None the less,
this forum has always been of great help to me and I am grateful for the
responses I get to my questions. I will implement the suggestions from y'all
and see how my routine's performance changes.

One more question: what does the "Option Explicit" do / mean ?

Thanks again !


"Dave Peterson" wrote:

#1. Nope.

dim RngToCopy as range
dim DestCell as range

set rngtocopy = worksheets("Sheet999").range("x1:z99")
set destcell = worksheets("sheet888").range("u71")

rngtocopy.copy _
destination:=destcell

#2. Nope.

worksheets("sheet999").range("z99").value = "what you want here"

#3. Nope.

worksheets("sheet999").rows(17).delete


==========
I'd turn calculation to manual, then do the work, then change the calculation
back to whatever it was before.

In fact, there are a few things that can slow down macros. I do this kind of
thing to speed them up:

Option Explicit
Sub testme()

Dim CalcMode As Long
Dim ViewMode As Long

Application.ScreenUpdating = False

CalcMode = Application.Calculation
Application.Calculation = xlCalculationManual

ViewMode = ActiveWindow.View
ActiveWindow.View = xlNormalView

ActiveSheet.DisplayPageBreaks = False

'do the work

'put things back to what they were
Application.Calculation = CalcMode
ActiveWindow.View = ViewMode

End Sub

Your code will replace the "'do the work" line.

When/if you're hiding rows/columns, excel wants to figure out where to draw
those lines each time you change the layout.


Eric @ BP-EVV wrote:

1. Do you have to "select" a worksheet or cell (or range of cells) before you
can copy a cell (or range of cells) from that worksheet ?
2. Do you have to "select" a worksheet or cell before you can assign a
formula to a cell in that worksheet ?
3. Do you have to "select" a row in a worksheet before you delete that row ?

These may seem like very basic VBA questions....and in reality they
are....what I am trying to get at is efficiency. I have some code in a
workbook that pulls data from a SQL table on an AS/400 system and them
performs several calcuations, sorts, etc. on that data. When I run this
routine for all 17 locations at one time, it takes nearly 10 minutes to run
to completion. What I'm really after here is suggestions on how to make my
code more efficient....what can I do to speed up this process ?

Thanks !

--

Dave Peterson


--

Dave Peterson


--

Dave Peterson
  #15   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 10,124
Default Basic VBA questions....

There could be other reasons. If desired, you may send your workbook to my
address below and I'll take a look. Please make sure I know who you are and
what you are talking about.

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"Eric @ BP-EVV" wrote in message
...
Just for the record, I have added "Option Explicit" and the compiler found
3
variables I had not defined...I fixed that...I commented out all the
unnecessary select statements, and revamped my delete, copy and paste type
statements.

I timed the performance with a stop watch before and after making these
changes, with the same "other applications" open on my computer and the
performance did improve a little....went from 9 minutes 40 seconds down to
9
minutes 20 seconds, which equates to almost a 3.5 % increase in speed....I
was hoping for more, so now I am going to study hard on the use of
calculation statements in the routine. I have it turned to manual at the
beginning...I need to make sure I am only forcing the recalculation when
absolutely necessary.

"Dave Peterson" wrote:

I think it's very useful for short code, too.

As well as making typos easier to find, if you declare your variables
correctly:

Dim wks as worksheet
not
dim wks as variant 'or as object

Then you'll get VBAs helpful intellisense--that's the popup that you see
after
typing the dot in:

wks.

You'll see a list of all the properties and methods that you could use.

JLGWhiz wrote:

Option Explicit means that all of your variables have to be declared.
If
they are not, the first one you try to use that is not declared will
generate
an error. It also helps you to catch typos because VBA will see the
typo as
a new undeclared variable and send you a message. For short procedures
it is
not that important, but it can save you a lot of grief in long and
complex
procedures.

"Eric @ BP-EVV" wrote:

Based on your reply, Dave, along with those of Paul and Don, it's
unanimous....I'm an amateur at this VBA coding stuff ! :-) None the
less,
this forum has always been of great help to me and I am grateful for
the
responses I get to my questions. I will implement the suggestions
from y'all
and see how my routine's performance changes.

One more question: what does the "Option Explicit" do / mean ?

Thanks again !


"Dave Peterson" wrote:

#1. Nope.

dim RngToCopy as range
dim DestCell as range

set rngtocopy = worksheets("Sheet999").range("x1:z99")
set destcell = worksheets("sheet888").range("u71")

rngtocopy.copy _
destination:=destcell

#2. Nope.

worksheets("sheet999").range("z99").value = "what you want here"

#3. Nope.

worksheets("sheet999").rows(17).delete


==========
I'd turn calculation to manual, then do the work, then change the
calculation
back to whatever it was before.

In fact, there are a few things that can slow down macros. I do
this kind of
thing to speed them up:

Option Explicit
Sub testme()

Dim CalcMode As Long
Dim ViewMode As Long

Application.ScreenUpdating = False

CalcMode = Application.Calculation
Application.Calculation = xlCalculationManual

ViewMode = ActiveWindow.View
ActiveWindow.View = xlNormalView

ActiveSheet.DisplayPageBreaks = False

'do the work

'put things back to what they were
Application.Calculation = CalcMode
ActiveWindow.View = ViewMode

End Sub

Your code will replace the "'do the work" line.

When/if you're hiding rows/columns, excel wants to figure out where
to draw
those lines each time you change the layout.


Eric @ BP-EVV wrote:

1. Do you have to "select" a worksheet or cell (or range of
cells) before you
can copy a cell (or range of cells) from that worksheet ?
2. Do you have to "select" a worksheet or cell before you can
assign a
formula to a cell in that worksheet ?
3. Do you have to "select" a row in a worksheet before you delete
that row ?

These may seem like very basic VBA questions....and in reality
they
are....what I am trying to get at is efficiency. I have some
code in a
workbook that pulls data from a SQL table on an AS/400 system and
them
performs several calcuations, sorts, etc. on that data. When I
run this
routine for all 17 locations at one time, it takes nearly 10
minutes to run
to completion. What I'm really after here is suggestions on how
to make my
code more efficient....what can I do to speed up this process ?

Thanks !

--

Dave Peterson


--

Dave Peterson




  #16   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 43
Default Basic VBA questions....

Don,

Thanks for the offer to review my workbook/code...I appreciate it...and I
may take you up on in shortly. I'm down to the last three days on my current
contract, and I would hate to ask for your help with such a short deadline,
and since the application I have developed works, just slower than I would
like, I'm willing to leave it as is as I depart, and should you be able to
help with improvements after the fact, I'll email the company and give them
the benefits of the improvements....heck...that may land me another contract
with them !

I will email you the workbook from my personal email....it will be coming
from

Thanks again !
Eric

"Don Guillett" wrote:

There could be other reasons. If desired, you may send your workbook to my
address below and I'll take a look. Please make sure I know who you are and
what you are talking about.

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"Eric @ BP-EVV" wrote in message
...
Just for the record, I have added "Option Explicit" and the compiler found
3
variables I had not defined...I fixed that...I commented out all the
unnecessary select statements, and revamped my delete, copy and paste type
statements.

I timed the performance with a stop watch before and after making these
changes, with the same "other applications" open on my computer and the
performance did improve a little....went from 9 minutes 40 seconds down to
9
minutes 20 seconds, which equates to almost a 3.5 % increase in speed....I
was hoping for more, so now I am going to study hard on the use of
calculation statements in the routine. I have it turned to manual at the
beginning...I need to make sure I am only forcing the recalculation when
absolutely necessary.

"Dave Peterson" wrote:

I think it's very useful for short code, too.

As well as making typos easier to find, if you declare your variables
correctly:

Dim wks as worksheet
not
dim wks as variant 'or as object

Then you'll get VBAs helpful intellisense--that's the popup that you see
after
typing the dot in:

wks.

You'll see a list of all the properties and methods that you could use.

JLGWhiz wrote:

Option Explicit means that all of your variables have to be declared.
If
they are not, the first one you try to use that is not declared will
generate
an error. It also helps you to catch typos because VBA will see the
typo as
a new undeclared variable and send you a message. For short procedures
it is
not that important, but it can save you a lot of grief in long and
complex
procedures.

"Eric @ BP-EVV" wrote:

Based on your reply, Dave, along with those of Paul and Don, it's
unanimous....I'm an amateur at this VBA coding stuff ! :-) None the
less,
this forum has always been of great help to me and I am grateful for
the
responses I get to my questions. I will implement the suggestions
from y'all
and see how my routine's performance changes.

One more question: what does the "Option Explicit" do / mean ?

Thanks again !


"Dave Peterson" wrote:

#1. Nope.

dim RngToCopy as range
dim DestCell as range

set rngtocopy = worksheets("Sheet999").range("x1:z99")
set destcell = worksheets("sheet888").range("u71")

rngtocopy.copy _
destination:=destcell

#2. Nope.

worksheets("sheet999").range("z99").value = "what you want here"

#3. Nope.

worksheets("sheet999").rows(17).delete


==========
I'd turn calculation to manual, then do the work, then change the
calculation
back to whatever it was before.

In fact, there are a few things that can slow down macros. I do
this kind of
thing to speed them up:

Option Explicit
Sub testme()

Dim CalcMode As Long
Dim ViewMode As Long

Application.ScreenUpdating = False

CalcMode = Application.Calculation
Application.Calculation = xlCalculationManual

ViewMode = ActiveWindow.View
ActiveWindow.View = xlNormalView

ActiveSheet.DisplayPageBreaks = False

'do the work

'put things back to what they were
Application.Calculation = CalcMode
ActiveWindow.View = ViewMode

End Sub

Your code will replace the "'do the work" line.

When/if you're hiding rows/columns, excel wants to figure out where
to draw
those lines each time you change the layout.


Eric @ BP-EVV wrote:

1. Do you have to "select" a worksheet or cell (or range of
cells) before you
can copy a cell (or range of cells) from that worksheet ?
2. Do you have to "select" a worksheet or cell before you can
assign a
formula to a cell in that worksheet ?
3. Do you have to "select" a row in a worksheet before you delete
that row ?

These may seem like very basic VBA questions....and in reality
they
are....what I am trying to get at is efficiency. I have some
code in a
workbook that pulls data from a SQL table on an AS/400 system and
them
performs several calcuations, sorts, etc. on that data. When I
run this
routine for all 17 locations at one time, it takes nearly 10
minutes to run
to completion. What I'm really after here is suggestions on how
to make my
code more efficient....what can I do to speed up this process ?

Thanks !

--

Dave Peterson


--

Dave Peterson



  #17   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 43
Default Basic VBA questions....

Just an FYI for anyone interested....I put in several breakpoints to my code
and used a stopwatch to time things....the sections of code that are slowing
down this process are the sections where Excel is calculating. I'm working on
trying to modify this application so that all the work is done on the AS/400
and only launch the execution and have the reporting in Excel for the users.
The AS/400 queries took about 2 minutes in total for 6 different queries,
while Excel took over 7 minutes to do the rest of the work when 17 facilitles
were selected simultaneously....about 120,000 records in Excel with between 8
and 10 columns being calculated for each record in order to complete the
analysis.

"Eric @ BP-EVV" wrote:

Don,

Thanks for the offer to review my workbook/code...I appreciate it...and I
may take you up on in shortly. I'm down to the last three days on my current
contract, and I would hate to ask for your help with such a short deadline,
and since the application I have developed works, just slower than I would
like, I'm willing to leave it as is as I depart, and should you be able to
help with improvements after the fact, I'll email the company and give them
the benefits of the improvements....heck...that may land me another contract
with them !

I will email you the workbook from my personal email....it will be coming
from

Thanks again !
Eric

"Don Guillett" wrote:

There could be other reasons. If desired, you may send your workbook to my
address below and I'll take a look. Please make sure I know who you are and
what you are talking about.

--
Don Guillett
Microsoft MVP Excel
SalesAid Software

"Eric @ BP-EVV" wrote in message
...
Just for the record, I have added "Option Explicit" and the compiler found
3
variables I had not defined...I fixed that...I commented out all the
unnecessary select statements, and revamped my delete, copy and paste type
statements.

I timed the performance with a stop watch before and after making these
changes, with the same "other applications" open on my computer and the
performance did improve a little....went from 9 minutes 40 seconds down to
9
minutes 20 seconds, which equates to almost a 3.5 % increase in speed....I
was hoping for more, so now I am going to study hard on the use of
calculation statements in the routine. I have it turned to manual at the
beginning...I need to make sure I am only forcing the recalculation when
absolutely necessary.

"Dave Peterson" wrote:

I think it's very useful for short code, too.

As well as making typos easier to find, if you declare your variables
correctly:

Dim wks as worksheet
not
dim wks as variant 'or as object

Then you'll get VBAs helpful intellisense--that's the popup that you see
after
typing the dot in:

wks.

You'll see a list of all the properties and methods that you could use.

JLGWhiz wrote:

Option Explicit means that all of your variables have to be declared.
If
they are not, the first one you try to use that is not declared will
generate
an error. It also helps you to catch typos because VBA will see the
typo as
a new undeclared variable and send you a message. For short procedures
it is
not that important, but it can save you a lot of grief in long and
complex
procedures.

"Eric @ BP-EVV" wrote:

Based on your reply, Dave, along with those of Paul and Don, it's
unanimous....I'm an amateur at this VBA coding stuff ! :-) None the
less,
this forum has always been of great help to me and I am grateful for
the
responses I get to my questions. I will implement the suggestions
from y'all
and see how my routine's performance changes.

One more question: what does the "Option Explicit" do / mean ?

Thanks again !


"Dave Peterson" wrote:

#1. Nope.

dim RngToCopy as range
dim DestCell as range

set rngtocopy = worksheets("Sheet999").range("x1:z99")
set destcell = worksheets("sheet888").range("u71")

rngtocopy.copy _
destination:=destcell

#2. Nope.

worksheets("sheet999").range("z99").value = "what you want here"

#3. Nope.

worksheets("sheet999").rows(17).delete


==========
I'd turn calculation to manual, then do the work, then change the
calculation
back to whatever it was before.

In fact, there are a few things that can slow down macros. I do
this kind of
thing to speed them up:

Option Explicit
Sub testme()

Dim CalcMode As Long
Dim ViewMode As Long

Application.ScreenUpdating = False

CalcMode = Application.Calculation
Application.Calculation = xlCalculationManual

ViewMode = ActiveWindow.View
ActiveWindow.View = xlNormalView

ActiveSheet.DisplayPageBreaks = False

'do the work

'put things back to what they were
Application.Calculation = CalcMode
ActiveWindow.View = ViewMode

End Sub

Your code will replace the "'do the work" line.

When/if you're hiding rows/columns, excel wants to figure out where
to draw
those lines each time you change the layout.


Eric @ BP-EVV wrote:

1. Do you have to "select" a worksheet or cell (or range of
cells) before you
can copy a cell (or range of cells) from that worksheet ?
2. Do you have to "select" a worksheet or cell before you can
assign a
formula to a cell in that worksheet ?
3. Do you have to "select" a row in a worksheet before you delete
that row ?

These may seem like very basic VBA questions....and in reality
they
are....what I am trying to get at is efficiency. I have some
code in a
workbook that pulls data from a SQL table on an AS/400 system and
them
performs several calcuations, sorts, etc. on that data. When I
run this
routine for all 17 locations at one time, it takes nearly 10
minutes to run
to completion. What I'm really after here is suggestions on how
to make my
code more efficient....what can I do to speed up this process ?

Thanks !

--

Dave Peterson


--

Dave Peterson



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
Very basic VBA questions. Cerberus Excel Programming 5 July 21st 08 07:43 PM
Basic Questions Peter Excel Programming 5 July 1st 07 07:32 PM
Basic questions Maine begins Excel Discussion (Misc queries) 1 July 7th 06 06:45 PM
Basic Pivot Table Questions shadestreet Excel Discussion (Misc queries) 0 April 17th 06 04:58 PM
EXCEL Visual Basic Questions Dean[_8_] Excel Programming 3 May 9th 05 09:03 PM


All times are GMT +1. The time now is 02:26 PM.

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

About Us

"It's about Microsoft Excel"