Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
Rob Rob is offline
external usenet poster
 
Posts: 718
Default Copy and paste range ontime

Hi,
I need to copy a static range and paste to specific cells at specific times.
The time interval is over 370 minutes. Here is the code that seems to work
well.

Sub CopyVolume1()
Range("C2:C4").Select
Selection.Copy
Range("D2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
End Sub

Public Sub Time()
Application.OnTime TimeValue("14:07:00"), "CopyVolume1"
Application.OnTime TimeValue("14:08:00"), "CopyVolume2"
Application.OnTime TimeValue("14:09:00"), "CopyVolume3"
End Sub

Sub CopyVolume2()
Range("C2:C4").Select
Selection.Copy
Range("e2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
End Sub

Sub CopyVolume3()
Range("C2:C4").Select
Selection.Copy
Range("f2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
End Sub

Is there a way to do this with out having to copy and paste the Sub
CopyVolume3
until I have 370 Sub CopyVolumes and 370 Application.OnTime
TimeValue("14:09:00"), "CopyVolume3". Each time having to enter the various
parameters ?


  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default Copy and paste range ontime

I've never set up 370 different ontime routines and I'm not sure how excel will
react.

Instead, I'd use a single ontime procedure that instructs itself to run once
more in a minute.

This is based on Chip Pearson's OnTime instructions:
http://www.cpearson.com/Excel/OnTime.aspx

(Untested, but it did compile)

Option Explicit
Public RunWhen As Double
Public Const cRunWhat = "DoTheCopy" ' the name of the procedure to run
Dim DestCell As Range
Dim sCtr As Long
Dim WhichSheet As Range
Sub StartTimer()

If WhichSheet Is Nothing Then
'initialize the variables
Set WhichSheet = ThisWorkbook.Worksheets("sheet1")
Set DestCell = WhichSheet.Range("c2")
sCtr = 1
RunWhen = Now + TimeSerial(14, 7, 0)
End If

Application.OnTime EarliestTime:=RunWhen, Procedu=cRunWhat, _
Schedule:=True
End Sub
Sub TheSub()

With WhichSheet
.Range("C2:C4").Copy
DestCell.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, _
SkipBlanks:=False, _
Transpose:=False
End With

'get ready for next time
If sCtr <= 370 Then
sCtr = sCtr + 1
RunWhen = RunWhen + TimeSerial(0, 1, 0)
Set DestCell = DestCell.Offset(0, 1)
StartTimer ' Reschedule the procedure
End If
End Sub
Sub StopTimer()
On Error Resume Next
Application.OnTime EarliestTime:=RunWhen, Procedu=cRunWhat, _
Schedule:=False
End Sub



Rob wrote:

Hi,
I need to copy a static range and paste to specific cells at specific times.
The time interval is over 370 minutes. Here is the code that seems to work
well.

Sub CopyVolume1()
Range("C2:C4").Select
Selection.Copy
Range("D2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
End Sub

Public Sub Time()
Application.OnTime TimeValue("14:07:00"), "CopyVolume1"
Application.OnTime TimeValue("14:08:00"), "CopyVolume2"
Application.OnTime TimeValue("14:09:00"), "CopyVolume3"
End Sub

Sub CopyVolume2()
Range("C2:C4").Select
Selection.Copy
Range("e2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
End Sub

Sub CopyVolume3()
Range("C2:C4").Select
Selection.Copy
Range("f2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
End Sub

Is there a way to do this with out having to copy and paste the Sub
CopyVolume3
until I have 370 Sub CopyVolumes and 370 Application.OnTime
TimeValue("14:09:00"), "CopyVolume3". Each time having to enter the various
parameters ?


--

Dave Peterson
  #3   Report Post  
Posted to microsoft.public.excel.programming
Rob Rob is offline
external usenet poster
 
Posts: 718
Default Copy and paste range ontime



"Dave Peterson" wrote:

I've never set up 370 different ontime routines and I'm not sure how excel will
react.

Instead, I'd use a single ontime procedure that instructs itself to run once
more in a minute.

This is based on Chip Pearson's OnTime instructions:
http://www.cpearson.com/Excel/OnTime.aspx

(Untested, but it did compile)

Option Explicit
Public RunWhen As Double
Public Const cRunWhat = "DoTheCopy" ' the name of the procedure to run
Dim DestCell As Range
Dim sCtr As Long
Dim WhichSheet As Range
Sub StartTimer()

If WhichSheet Is Nothing Then
'initialize the variables
Set WhichSheet = ThisWorkbook.Worksheets("sheet1")
Set DestCell = WhichSheet.Range("c2")
sCtr = 1
RunWhen = Now + TimeSerial(14, 7, 0)
End If

Application.OnTime EarliestTime:=RunWhen, Procedu=cRunWhat, _
Schedule:=True
End Sub
Sub TheSub()

With WhichSheet
.Range("C2:C4").Copy
DestCell.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, _
SkipBlanks:=False, _
Transpose:=False
End With

'get ready for next time
If sCtr <= 370 Then
sCtr = sCtr + 1
RunWhen = RunWhen + TimeSerial(0, 1, 0)
Set DestCell = DestCell.Offset(0, 1)
StartTimer ' Reschedule the procedure
End If
End Sub
Sub StopTimer()
On Error Resume Next
Application.OnTime EarliestTime:=RunWhen, Procedu=cRunWhat, _
Schedule:=False
End Sub



Rob wrote:

Hi,
I need to copy a static range and paste to specific cells at specific times.
The time interval is over 370 minutes. Here is the code that seems to work
well.

Sub CopyVolume1()
Range("C2:C4").Select
Selection.Copy
Range("D2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
End Sub

Public Sub Time()
Application.OnTime TimeValue("14:07:00"), "CopyVolume1"
Application.OnTime TimeValue("14:08:00"), "CopyVolume2"
Application.OnTime TimeValue("14:09:00"), "CopyVolume3"
End Sub

Sub CopyVolume2()
Range("C2:C4").Select
Selection.Copy
Range("e2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
End Sub

Sub CopyVolume3()
Range("C2:C4").Select
Selection.Copy
Range("f2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
End Sub

Is there a way to do this with out having to copy and paste the Sub
CopyVolume3
until I have 370 Sub CopyVolumes and 370 Application.OnTime
TimeValue("14:09:00"), "CopyVolume3". Each time having to enter the various
parameters ?


--

Dave Peterson
.
Thank you Dave.

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
Copy & paste range nc Excel Programming 4 July 20th 09 05:08 AM
Find %ontime & SUMIF ontime ie: find matching sets within Range... Chris T-M Excel Worksheet Functions 3 October 10th 08 08:14 PM
copy range and paste into every 3rd cell of new range thomsonpa New Users to Excel 4 December 3rd 07 01:47 PM
Copy/Paste Range mastermind Excel Programming 2 December 22nd 06 07:04 PM
Copy paste range Marc Bell Excel Programming 2 February 16th 04 01:21 PM


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