返回列表 上一主題 發帖

如何將台指期的每一分鐘資料都紀錄在sheet 1裡..請教版上高手前輩~~

回復 23# cfuxiong
試試看
  1. Option Explicit
  2. Private Sub Workbook_Open()
  3.     With Sheets("策略記錄")
  4.         .Cells(4, 2) = 9 ' 紀錄從10列開始
  5.         .Range(.Cells(10, 1), .Cells(10, 1).End(xlDown).Offset(, 8)) = ""
  6.         '清除 舊有資料
  7.     End With
  8.     Timer_DEE
  9. End Sub
  10. Private Sub Workbook_BeforeClose(Cancel As Boolean)
  11.     On Error Resume Next
  12.     Application.OnTime Now + TimeValue("00:00:01"), "ThisWorkbook.Timer_DEE", , False
  13. End Sub
  14. Public Sub Timer_DEE()
  15.     'Timer 函數 傳回一 Single,其內容為從前一個午夜算起到現在所經過的秒數。
  16.     '變數,程序:名稱要避免使用VBA 的內定關鍵字
  17.     Dim Pos As Integer, i As Integer, RangeStr As String
  18.     On Error Resume Next
  19.     Application.OnTime Now + TimeValue("00:00:01"), "ThisWorkbook.Timer_DEE"    '每秒顯示
  20.     Sheets("策略記錄").Cells(3, 2) = Time                                   '將時間show至策略的b3欄位
  21.     'Dim HHMM As Integer
  22.     'HHMM = Hour(Time) * 100 + Minute(Time)
  23.     'If (HHMM < 845 Or HHMM > 1345) Then Exit Sub '營業時間才執行
  24.     If Time < #9:00:00 AM# Or Time > #1:30:00 PM# Then Exit Sub  '營業時間才執行
  25.     If Second(Time) Mod 30 = 0 Then '間隔30秒
  26.     'If Second(Time) Mod 5 = 0 Then '間隔5秒 10秒 15秒 ....
  27.         With Sheets("策略記錄")
  28.             .Cells(4, 2) = .Cells(4, 2) + 1 '將變動行號加一行
  29.             Pos = .Cells(4, 2)
  30.             .Cells(Pos, 1) = Time
  31.             .Cells(Pos, 2).Resize(, 8) = .[b2:i2].Value
  32.             'Sheets("策略記錄").[b2:i2] 分別是以下的DEE
  33.             '[多空力道][反向勢力][主力控盤][台指期 成交價][台指期 成交價][摩台指][韓國綜合][日經指數]
  34.         End With
  35.     End If
  36. End Sub
複製代碼

TOP

本帖最後由 GBKEE 於 2012-12-9 12:49 編輯

回復 26# cfuxiong
不是加上: 是要修改ThisWorkbook 上的程式碼 (copy 覆蓋掉 ThisWorkbook 上的程式碼)

TOP

本帖最後由 GBKEE 於 2012-12-9 14:09 編輯

回復 28# cfuxiong
沒有那麼難的,照我說的去試試看!!!

這裡改依改就可  
'Sheets("策略記錄").[b2:i2] 分別是以下的DEE
'[多空力道][反向勢力][主力控盤][台指期 成交價][台指期 成交價][摩台指][韓國綜合][日經指數]

TOP

回復 30# cfuxiong
  1. .Cells(Pos, 2).Resize(, 8) = .[b2:i2].Value
  2.             ' ****** Sheets("策略記錄").[b2:i2] 分別是以下的DEE   ******
  3.            '****[多空力道][反向勢力][主力控盤][台指期 成交價][台指期 成交價][摩台指][韓國綜合][日經指數]****
複製代碼

24#程式碼 : 工作表 Sheets("策略記錄").[B2:I2] 這8個儲存格 ,要改成那些DEE的公式
                      程式每隔?秒,要抓取.[b2:i2].Value 這些資料到  .Cells(Pos, 2).Resize(, 8) 這裡
完成上面步驟,VBA 視窗裡:ThisWorkbook模組 刪掉所有程式碼 ,貼上 24# 所有程式碼?
明天看是否成功!!!!

TOP

本帖最後由 GBKEE 於 2012-12-15 07:19 編輯

回復 32# cfuxiong
This Workbook已改成;'Sheets("策略記錄").[b10:g10] 分別是以下的DEE
如圖 工作表也要改:輸入公式(圖中是示範的公式,看那些DEE在哪裡)




附檔的程式碼你有修改:你須再修改
  1. With Sheets("策略記錄")
  2.             .Cells(4, 2) = .Cells(4, 2) + 1 '將變動行號加一行
  3.             Pos = .Cells(4, 2)
  4.             .Cells(Pos, 1) = Time
  5.          '   .Cells(Pos, 2).Resize(, 8) = .[b10:g10].Value  'b10:g10 只有6欄  且位址也不對
  6.             .Cells(Pos, 2).Resize(, 6) = .[b2:g2].Value   '要修改為 6
  7.             'Sheets("策略記錄").[b2:i2] 分別是以下的DEE
  8.             '[多空力道][反向勢力][主力控盤][摩台指][韓國綜合][日經指數]  '只有6欄
  9.         End With
複製代碼
Mod 60 = 0 Then,間隔60秒    試試就知

TOP

本帖最後由 GBKEE 於 2012-12-15 07:21 編輯

回復 37# cfuxiong
程式碼中 每行程式碼 前面的 ' 是作為程式碼的註解(解釋用) 程式不會執行的
  1. If Time < #9:00:00 AM# Or Time > #1:30:00 PM# Then Exit Sub  '營業時間才執行
  2.     If Second(Time) Mod 60 = 0 Then '間隔60秒         
  3.     'If Second(Time) Mod 5 = 0 Then '間隔5秒 10秒 15秒 ....  這行是註解解釋 舉列 5 為每5秒  類推....     
  4.         With Sheets("策略記錄")
  5.             .Cells(4, 2) = .Cells(4, 2) + 1 '將變動行號加一行
  6.             Pos = .Cells(4, 2)
  7.             .Cells(Pos, 1) = Time
  8.           '  .Cells(Pos, 2).Resize(, 8) = .[b10:g10].Value   '** 如執行此行 會有2個 "#NA"
  9.              '  ***** Resize(, 8)這裡是8欄  ,[b10:g10]  這裡 b:g  只有6欄
  10.             .Cells(Pos, 2).Resize(, 6) = .[b2:g2].Value   ' 執行此行就可以  ** 要修改為 6及位址 **
  11.             'Sheets("策略記錄").[b2:i2] 分別是以下的DEE
  12.             '[多空力道][反向勢力][主力控盤][摩台指][韓國綜合][日經指數]  '只有6欄
  13.         End With
  14.     End If
複製代碼

TOP

回復 40# cfuxiong
38# : 只改到欄數,沒改到位址!!!  ,已更正可再參考一下!

  1.             ' .Cells(Pos, 2).Resize(, 8) = .[b10:g10].Value  'b10:g10 只有6欄 ***這行不要了****
  2.            ' .Cells(Pos, 2).Resize(, 6) = .[b10:g10].Value   '只要修改到欄數為 6 , 沒改到位址
  3.              .Cells(Pos, 2).Resize(, 6) = .[b2:g2].Value   ' *** 這才完全正確 ***
複製代碼

TOP

        靜思自在 : 我們要做好社會的環保,也要做好內心的環保。
返回列表 上一主題