返回列表 上一主題 發帖

[發問] 劵商DDE傳Excel 每分自動記錄數據

回復 29# andylin
收市前有效 試試看
  1. 'ThisWorkbook模組的程序
  2. Private Sub Workbook_Open()    '此程式是檔案開啟時自動執行的程式
  3.     If MsgBox("啟動自動記錄資料??", vbYesNo) = vbNo Then Exit Sub
  4.     Sheets("1分K").UsedRange.Offset(1, 1) = ""       '  清除昨日資料
  5.     Sheets("5分K").UsedRange.Offset(1, 1) = ""
  6.     Sheets("15分K").UsedRange.Offset(1, 1) = ""
  7.     If Time >= #8:46:00 AM# And Time <= #1:30:00 PM# Then   '開市時間內開檔
  8.         資料輸入
  9.    ElseIf Time < #8:46:00 AM# Then                          '開市前內開檔
  10.         Application.OnTime #8:46:00 AM#, "ThisWorkbook.資料輸入"
  11.    End If
  12. End Sub
  13. Sub 資料輸入()
  14.     Dim E As Range
  15.     '''''''''''''''''''''''''''''''''''''
  16.     'Dim Ar()      'Ar陣列 ->  存入你要的數據
  17.     'Ar = Sheets("Table").Range("B2:D2").Value
  18.     '''''''''''''''''''''''''''''''''''''
  19.     Dim Ar(1 To 3)      'Ar陣列 ->  存入你要的數據
  20.     Ar(1) = [Table!B2]
  21.     Ar(2) = [Table!C2]
  22.     Ar(3) = [Table!D2]
  23.     If Minute(Time) Mod 1 = 0 Then
  24.         Set E = Sheets("1分K").Range("A:A").Find(TimeSerial(Hour(Time), Minute(Time), 0))
  25.         E.Offset(0, 1).Resize(1, UBound(Ar)).Value = Ar 'Minute(Time) Mod 1=0  每分鐘
  26.     End If
  27.     If Minute(Time) Mod 5 = 0 Then
  28.         Set E = Sheets("5分K").Range("A:A").Find(TimeSerial(Hour(Time), Minute(Time), 0))
  29.         E.Offset(0, 1).Resize(1, UBound(Ar)).Value = Ar 'Minute(Time) Mod 5=0  每5分鐘
  30.     End If
  31.     If Minute(Time) Mod 15 = 0 Then
  32.         Set E = Sheets("15分K").Range("A:A").Find(TimeSerial(Hour(Time), Minute(Time), 0))
  33.         E.Offset(0, 1).Resize(1, UBound(Ar)).Value = Ar 'Minute(Time) Mod 15=0  每15分鐘
  34.     End If
  35.     If Time <= #1:30:00 PM# Then Application.OnTime TimeValue(Format(Time, "hh:MM:00")) + #12:01:00 AM#, "ThisWorkbook.資料輸入"
  36.     ' ***  #1:30:00 PM# 之前時間執行程式 ->資料輸入
  37.     Set E = Nothing    '
  38. End Sub
複製代碼

TOP

本帖最後由 GBKEE 於 2011-7-22 15:01 編輯

回復 36# andylin

收市時間之前,重新開檔 都會記錄資料      重新開檔就好了 為何暖開機也沒用
修改為 選擇清除已存在的資料 的詢問
  1. 'ThisWorkbook模組的程序
  2. Private Sub Workbook_Open()    '此程式是檔案開啟時自動執行的程式
  3.     If MsgBox("清除已存在的資料??", vbYesNo) = vbYes Then
  4.           Sheets("1分K").UsedRange.Offset(1, 1) = ""       '  清除已存在的資料
  5.           Sheets("5分K").UsedRange.Offset(1, 1) = ""
  6.           Sheets("15分K").UsedRange.Offset(1, 1) = ""
  7.     End If
  8.     If Time >= #8:46:00 AM# And Time <= #1:30:00 PM# Then   '開市時間內開檔
  9.         資料輸入
  10.    ElseIf Time < #8:46:00 AM# Then                          '開市前內開檔
  11.         Application.OnTime #8:46:00 AM#, "ThisWorkbook.資料輸入"
  12.    End If
  13. End Sub
複製代碼

TOP

        靜思自在 : 站在半路,比走到目標更辛苦。
返回列表 上一主題