Board logo

標題: [發問] 發問 : 如何設定能在規定的時間紀錄資料 [打印本頁]

作者: HenryWang123    時間: 2014-5-26 11:13     標題: 發問 : 如何設定能在規定的時間紀錄資料

本帖最後由 GBKEE 於 2014-5-27 13:42 編輯

[attach]18369[/attach]

大家好,我是完全不懂程式交易的新手,煩請各位高手前輩指導了~

圖片中紅色框框已經設定可以跟永豐Eleader連線,數字會自動更新。

目前我想要每兩分鐘將上面藍色框框的數據自動紀錄在下方規定時間旁的區域,請問我該如何輸入語法,或者是如何操作呢 ?

麻煩各位前輩指導了:loveliness:
作者: HenryWang123    時間: 2014-5-26 15:23

回復 1# HenryWang123


    如果教學要收費也可以寄信給我~ [email protected]
作者: owen06    時間: 2014-5-27 11:29

回復 2# HenryWang123
  
我是會定時讓資料往下copy啦,可是瑞凡~~~我停不下來呀~~~有沒有其他高手能教一下怎麼設定退場機制,讓他能在預定的時間過後,就不再copy了。
Application.OnTime t2, "AutoCopy",,false   這個語法一直不知道該怎麼應用。

   在thisworkbook裡貼上
  1. Private Sub Workbook_Open()
  2. T = #10:58:00 AM#
  3. Application.OnTime T, "AutoCopy"
  4. End Sub
複製代碼
然後新增模組,再貼上
  1. Sub AutoCopy()
  2. t2 = Now + TimeSerial(0, 2, 0)
  3. Sheet1.[b8:i10].Copy
  4. Sheet1.[b65536].End(3).Offset(1, 0).Select
  5. If Sheet1.[b13] = "" Then Sheet1.[b13].Select
  6. Selection.PasteSpecial xlPasteValues
  7. Application.OnTime t2, "AutoCopy"
  8. End Sub
複製代碼

作者: GBKEE    時間: 2014-5-27 13:56

回復 3# owen06


   
我停不下來呀
  1. If Time <= #1:30:00 PM# Then Application.OnTime t2, "AutoCopy"
複製代碼

作者: owen06    時間: 2014-5-27 14:25

回復 4# GBKEE


    原來在application.ontime前面設定個IF執行條件就行了!感謝GKBEE版主一語點醒夢中人~~~
    謝謝版主大大~
作者: stillfish00    時間: 2014-5-27 17:01

回復 3# owen06
Application.OnTime t2, "AutoCopy",,false   這個語法一直不知道該怎麼應用。

可用全域變數紀錄時間,以取消該時間的排程
  1. Private tNext As Date

  2. Sub StartButton()
  3.   On Error Resume Next
  4.   StopButton
  5.   On Error GoTo 0

  6.   MyLoop TimeValue("18:00:00")
  7. End Sub

  8. Public Sub StopButton()
  9.   Application.OnTime tNext, "MyLoop", , False
  10. End Sub

  11. Sub MyLoop(Optional tStart)
  12.   Const MIN_INTERVAL = 1 '間隔時間
  13.   
  14.   If Not IsMissing(tStart) Then
  15.     tNext = tStart
  16.     Application.OnTime tNext, "MyLoop"
  17.   Else
  18.     tNext = tNext + TimeSerial(0, MIN_INTERVAL, 0)
  19.     Application.OnTime tNext, "MyLoop"
  20.     MyCopyFunc 'call your copy function
  21.   End If
  22. End Sub

  23. Sub MyCopyFunc()
  24.   'The timing cost of MyCopyFunc should less than the time of INTERVAL
  25.   'Copy here
  26. End Sub
複製代碼

作者: HenryWang123    時間: 2014-5-28 09:38

真的非常感謝各位的解答~讓我能夠有機會到下一步!!
目前按執行以後有遇到這個問題,在煩請各位幫忙了!
[attach]18388[/attach]
[attach]18389[/attach]

請問該如何解決呢?
作者: owen06    時間: 2014-5-28 11:47

回復 7# HenryWang123


    應該是找不到sheet1的關係,你把裡面的sheet1都改成sheets("xxx")應該就行了。(xxx為工作表名稱)
    我使用sheet1是因為沒有你的檔案,所以只能用自己使用的情境下去設定,
    因此你在不同的情況下,就會出現錯誤,你必需要自己去修改工作表名稱這個部份才可以。
作者: HenryWang123    時間: 2014-5-28 12:32

有了可以了~ 非常感謝您~
另外有看到網友說要停下來可以用下面這個語法,請問是要加到哪一行裡面呢?
If Time <= #1:30:00 PM# Then Application.OnTime t2, "AutoCopy"
作者: owen06    時間: 2014-5-28 12:53

回復 9# HenryWang123


在AutoCopy那個模組裡的最後一行
本來是:Application.OnTime t2, "AutoCopy"
把他改成:If Time <= #1:30:00 PM# Then Application.OnTime t2, "AutoCopy"
就行了。
作者: HenryWang123    時間: 2014-5-28 21:29

發自內心的感謝您

作者: HenryWang123    時間: 2014-6-5 10:53

[attach]18438[/attach]

[attach]18440[/attach]

這邊遇到一個狀況需要再請教各位,就是想要在" Sheet1 "和" Sheet2 " 執行同樣的動作,但是卻無法執行,請問該怎麼解決呢?

我的動作是按執行 > 選執行module 1 > 執行一個動作後,下一次要copy時就出現"發現不確定名稱"的這個問題了

如果我選執行module 1 > 接著再選執行選執行module 2 > 就會進行偵錯

要請教各位該如何解決呢 ?
作者: owen06    時間: 2014-6-5 12:32

回復 12# HenryWang123


    請問方便附個檔案來看看嗎?
作者: HenryWang123    時間: 2014-6-5 16:07

[attach]18445[/attach]

麻煩囉
作者: f3202    時間: 2014-6-5 20:26

回復 14# HenryWang123

應是沒指定 sheet1 或 sheet2
作者: owen06    時間: 2014-6-6 00:20

回復 12# HenryWang123


    我想你應該是停留在sheet1,但是指令卻命令他要去sheet2越區辦案,
    所以他就抗命囉。
    你如果是都只要copy同一個資料,但是到不同工作表,我是建議你修改成這樣,
    用一個模組就好了,另一個取消掉。
    如果有其他問題,再提出來一起討論吧。
  1. Sub AutoCopy()
  2. t2 = Now + TimeSerial(0, 1, 0)
  3. Application.Calculation = xlAutomatic
  4. Sheets("sheet1").Select
  5. Sheets("Sheet1").[a9:j11].Copy
  6. Sheets("Sheet1").[b65536].End(3).Offset(1, 0).Select
  7. If Sheets("Sheet1").[b13] = "" Then Sheets("Sheet1").[b13].Select
  8. Selection.PasteSpecial xlPasteValues
  9. Sheets("sheet2").Select
  10. Sheets("Sheet2").[b65536].End(3).Offset(1, 0).Select
  11. If Sheets("Sheet2").[b13] = "" Then Sheets("Sheet2").[b13].Select
  12. Selection.PasteSpecial xlPasteValues
  13. If Time <= #13:45:00 PM# Then Application.OnTime t2, "AutoCopy"
  14. End Sub
複製代碼

作者: c_c_lai    時間: 2014-6-6 07:59

本帖最後由 c_c_lai 於 2014-6-6 08:51 編輯

回復 14# HenryWang123
試試看!
ThisWorkbook:
  1. Option Explicit
  2. Private Sub Workbook_Open()
  3.     Dim T As Date
  4.    
  5.     T = #8:47:00 AM#
  6.     Application.OnTime T, "Module1.AutoCopy"
  7. End Sub
複製代碼
Module1:
  1. Option Explicit
  2. Sub AutoCopy()
  3.     Dim t2 As Date
  4.     Dim i As Integer, sht As String
  5.    
  6.     i = 0
  7.     While i < 2
  8.         i = i + 1
  9.         t2 = Now + TimeSerial(0, 2, 0)
  10.         sht = IIf(i = 1, "Sheet1", "Sheet2")
  11.         With Sheets(sht)
  12.             .Select
  13.             .[a9:j11].Copy
  14.             .[b65536].End(3).Offset(1, 0).Select
  15.             If .[b13] = "" Then .[b13].Select
  16.             Selection.PasteSpecial xlPasteValues
  17.         End With
  18.     Wend
  19.     If Time <= #1:45:00 PM# Then Application.OnTime t2, "Module1.AutoCopy"
  20. End Sub
複製代碼

作者: HenryWang123    時間: 2014-6-9 13:04

很順利的運行~謝謝兩位的熱心幫忙~





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)