使用VBA記錄股市每分鐘的交易記錄
其實也是一個很簡單的程式,但是看起來就不像是高手寫的,因為一直跳來跳去
假設工作表2是DDE的資料,將DDE的資料每分鐘copy到工作表1
Dim i As Single '宣告變數i
Dim Workday As Integer '宣告變數Workday
Private Sub workbook_open() '當這個excel檔案打開時,執行以下程序
Workday = Application.Evaluate("WEEKDAY(TODAY())-1") '算出今天是一星期中的第幾天,並將數值存入Workday
If Workday >= 1 And Workday <= 5 Then '判斷是否為工作天
If Format(Time, "hh:mm:ss") >= "09:00:00" And Format(Time, "hh:mm:ss") <= "13:31:00" Then '判斷是否為盤中
Call a '執行程序a
Else
Application.OnTime TimeValue("00:09:00"), "ThisWorkBook.a" '如果不是在盤中則等待明天九點開盤
End If
End If
End Sub
Private Sub a() '宣告一個程序a
i = 2 '將i預設為2,因為資料是由第2行開始貼上
Call b '執行程序b
End Sub
Private Sub b() '宣告一個程序b
Range("Stock200").Rows("2:201").Copy 'Copy範圍"Stock200"中的第2到第201列
工作表1.Cells(i, 1).PasteSpecial xlPasteValues '從工作表1的(i,1)的位置貼上,xlPasteValues代表只貼上值
i = i + 200 '因貼上第2,201,401...列,故每次加200
Application.OnTime Now + TimeValue("00:01:00"), "ThisWorkBook.b" '每隔一分鐘便執行程序b
ActiveWorkbook.Save '每分鐘存檔
End Sub
假設工作表2是DDE的資料,將DDE的資料每分鐘copy到工作表1
Dim i As Single '宣告變數i
Dim Workday As Integer '宣告變數Workday
Private Sub workbook_open() '當這個excel檔案打開時,執行以下程序
Workday = Application.Evaluate("WEEKDAY(TODAY())-1") '算出今天是一星期中的第幾天,並將數值存入Workday
If Workday >= 1 And Workday <= 5 Then '判斷是否為工作天
If Format(Time, "hh:mm:ss") >= "09:00:00" And Format(Time, "hh:mm:ss") <= "13:31:00" Then '判斷是否為盤中
Call a '執行程序a
Else
Application.OnTime TimeValue("00:09:00"), "ThisWorkBook.a" '如果不是在盤中則等待明天九點開盤
End If
End If
End Sub
Private Sub a() '宣告一個程序a
i = 2 '將i預設為2,因為資料是由第2行開始貼上
Call b '執行程序b
End Sub
Private Sub b() '宣告一個程序b
Range("Stock200").Rows("2:201").Copy 'Copy範圍"Stock200"中的第2到第201列
工作表1.Cells(i, 1).PasteSpecial xlPasteValues '從工作表1的(i,1)的位置貼上,xlPasteValues代表只貼上值
i = i + 200 '因貼上第2,201,401...列,故每次加200
Application.OnTime Now + TimeValue("00:01:00"), "ThisWorkBook.b" '每隔一分鐘便執行程序b
ActiveWorkbook.Save '每分鐘存檔
End Sub
這也可以當做一篇嗎
回覆刪除還有註解,整個很用心!
回覆刪除我現在朝另外一種部落客前進 因為練肖話練不過別人
回覆刪除而且這麼宅的網址你們還來看 太感人了
回覆刪除正好要用到,謝謝!
回覆刪除若非COPY到工作表上,而是直接貼上單一儲存格的話如何寫VBA?
回覆刪除