返回列表 上一主題 發帖

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

回復 20# andylin
謝謝你的圖檔 隔行如隔山,我完全看不懂.哈....

若明日8:45am開盤前 我開起此excel檔後 我是否需要自己手動將excel欄位裡今日的數據全delete掉?
答案在這裡
Private Sub Workbook_Open()    '此程式是檔案開啟時自動執行的程式
    Dim E As Range
    If MsgBox("啟動自動記錄資料??", vbYesNo) = vbNo Then Exit Sub      '按 Yes 會依序清除昨日資料 按 No 離開程式   
    Sheets("1分K").UsedRange.Offset(1, 1) = ""       ' 清除昨日資料delete掉
    Sheets("5分K").UsedRange.Offset(1, 1) = ""       '  清除昨日資料 delete掉   
    Sheets("15分K").UsedRange.Offset(1, 1) = ""     '  清除昨日資料delete掉





TOP

本帖最後由 andylin 於 2011-7-24 17:51 編輯

回復 21# GBKEE

大大真的謝謝您 Orz
真的非常感謝您
讓小弟功力提昇至另一層級
真的感恩
再三感謝您 Orz

TOP

本帖最後由 andylin 於 2011-7-24 17:53 編輯

回復 21# GBKEE


大大您好
對不起 又來麻煩您 Orz

我將前一個大大所傳授的Excel VBA內容
努力理解後 試著依大大的程式碼語法 嘗試編寫國外商品
但我寫出來的沒回應  一.一"'
不知我程式碼那裡有誤
還請大大提攜指導 Orz

不知要怎樣寫
希望VBA能自動計算帶出的寫法
還有勞大大您撥伔指導 Orz

給您添麻煩了 Orz
真的感謝您
感恩 Orz

for GBKEE大_元大Excel VBA_國外期_20110714_test 01.rar (18.28 KB)

TOP

本帖最後由 GBKEE 於 2011-7-16 13:43 編輯

回復 23# andylin
依樣畫葫蘆 試試看
  1. 'ThisWorkbook模組的程序
  2. Private Sub Workbook_Open()    '此程式是檔案開啟時自動執行的程式
  3.     Dim E As Range
  4.     If MsgBox("啟動自動記錄資料??", vbYesNo) = vbNo Then Exit Sub
  5.     Sheets("1分K").UsedRange.Offset(1, 1) = ""       '  清除昨日資料
  6.     Sheets("5分K").UsedRange.Offset(1, 1) = ""
  7.     Sheets("15分K").UsedRange.Offset(1, 1) = ""
  8.     Application.OnTime #9:00:00 AM#, "ThisWorkbook.資料輸入"
  9.     '**** 09:00:00時間執行程式 ->資料輸入
  10. End Sub
  11. Sub 資料輸入()
  12.     Dim Ar(1 To 15)      'Ar陣列 ->  存入你要的數據
  13.     Ar(1) = Time
  14.     Ar(2) = [Table!B2]
  15.     Ar(3) = [Table!C2]
  16.     Ar(4) = "=IF(ROW()>2,RC[-2]-R[-1]C[-2],"""")"    ' **  公式
  17.     Ar(5) = "=IF(ROW()>2,RC[-2]-R[-1]C[-2],"""")"
  18.     'Ar(6) 空白
  19.     Ar(7) = [Table!E2]
  20.     Ar(8) = [Table!F2]
  21.     Ar(9) = "=IF(ROW()>2,RC[-2]-R[-1]C[-2],"""")"
  22.     Ar(10) = "=IF(ROW()>2,RC[-2]-R[-1]C[-2],"""")"
  23.     'Ar(11) 空白
  24.     Ar(12) = [Table!H2]
  25.     Ar(13) = [Table!I2]
  26.     Ar(14) = "=IF(ROW()>2,RC[-2]-R[-1]C[-2],"""")"
  27.     Ar(15) = "=IF(ROW()>2,RC[-2]-R[-1]C[-2],"""")"
  28.     If Minute(Time) Mod 1 = 0 Then Sheets("1分K").Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(1, UBound(Ar)).Value = Ar  'Minute(Time) Mod 1=0  每分鐘
  29.     If Minute(Time) Mod 5 = 0 Then Sheets("5分K").Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(1, UBound(Ar)).Value = Ar  'Minute(Time) Mod 1=0  每5分鐘
  30.     If Minute(Time) Mod 15 = 0 Then Sheets("15分K").Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(1, UBound(Ar)).Value = Ar 'Minute(Time) Mod 1 =0 每15分鐘
  31.     If Time <= #1:30:00 PM# Then Application.OnTime TimeValue(Format(Time, "hh:MM:00")) + #12:01:00 AM#, "ThisWorkbook.資料輸入"
  32.     ' ***  #1:30:00 PM# 之前時間執行程式 ->資料輸入
  33. End Sub
複製代碼
請看這裡的PS

TOP

本帖最後由 andylin 於 2011-7-24 17:54 編輯

大大謝謝您 Orz
真的感謝您
感恩 Orz

TOP

回復 24# GBKEE

大大 不好意思
小弟中文不好 英文不行
誤解了 還請見諒
我瞭解ps的意思了
今後還請各位先進賢拜不吝指導

感恩感恩 Orz Orz

TOP

本帖最後由 andylin 於 2011-7-24 17:55 編輯

回復 24# GBKEE

大大您好
對不起
不才小弟又來麻煩您

這次想把附檔"table"裡的三個欄位: B2  C2  D2的數值
希望能依1分/5分/15分 分別定時定存入 1分/5分/15分 sheets裡list出數據來
不曉得您是否能再次指導小弟一番 Orz  Orz

有勞您撥伔指導
小弟感激不盡 Orz
若有待慢您之處還請您見諒
拜託您 Orz  Orz

20110721_for GBKEE大大.rar (15.17 KB)

TOP

回復 27# andylin
  1. 'ThisWorkbook模組的程序
  2. Private Sub Workbook_Open()    '此程式是檔案開啟時自動執行的程式
  3.     Dim E As Range
  4.     If MsgBox("啟動自動記錄資料??", vbYesNo) = vbNo Then Exit Sub
  5.     Sheets("1分K").UsedRange.Offset(1, 1) = ""       '  清除昨日資料
  6.     Sheets("5分K").UsedRange.Offset(1, 1) = ""
  7.     Sheets("15分K").UsedRange.Offset(1, 1) = ""
  8.     Application.OnTime #8:46:00 AM#, "ThisWorkbook.資料輸入"
  9.     '**** 08:46:00時間執行程式 ->資料輸入
  10. End Sub
  11. Sub 資料輸入()
  12.     '''''''''''''''''''''''''''''''''''''
  13.     'Dim Ar()      'Ar陣列 ->  存入你要的數據
  14.     'Ar = Sheets("Table").Range("B2:D2").Value
  15.     '''''''''''''''''''''''''''''''''''''
  16.     Dim Ar(1 To 3)      'Ar陣列 ->  存入你要的數據
  17.     Ar(1) = [Table!B2]
  18.     Ar(2) = [Table!C2]
  19.     Ar(3) = [Table!D2]
  20. '**   Sheets("1分K").Range("B" & Rows.Count).End(xlUp).Offset(1) **   資料從B欄開使置入 **

  21. If Minute(Time) Mod 1 = 0 Then Sheets("1分K").Range("B" & Rows.Count).End(xlUp).Offset(1).Resize(1, UBound(Ar)).Value = Ar  'Minute(Time) Mod 1=0  每分鐘
  22.     If Minute(Time) Mod 5 = 0 Then Sheets("5分K").Range("B" & Rows.Count).End(xlUp).Offset(1).Resize(1, UBound(Ar)).Value = Ar  'Minute(Time) Mod 1=0  每5分鐘
  23.     If Minute(Time) Mod 15 = 0 Then Sheets("15分K").Range("B" & Rows.Count).End(xlUp).Offset(1).Resize(1, UBound(Ar)).Value = Ar 'Minute(Time) Mod 1 =0 每15分鐘
  24.     If Time <= #1:30:00 PM# Then Application.OnTime TimeValue(Format(Time, "hh:MM:00")) + #12:01:00 AM#, "ThisWorkbook.資料輸入"
  25.     ' ***  #1:30:00 PM# 之前時間執行程式 ->資料輸入
  26. End Sub
複製代碼

TOP

本帖最後由 andylin 於 2011-7-24 17:56 編輯

回復 28# GBKEE

大大您好
感謝您
感恩 Orz

for GBKEE大大_20110721_test02.rar (22.96 KB)

TOP

回復 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

        靜思自在 : 自己害自己,莫過於亂發脾氣。
返回列表 上一主題