使用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

留言

  1. 我現在朝另外一種部落客前進 因為練肖話練不過別人

    回覆刪除
  2. 而且這麼宅的網址你們還來看 太感人了

    回覆刪除
  3. 若非COPY到工作表上,而是直接貼上單一儲存格的話如何寫VBA?

    回覆刪除

張貼留言

這個網誌中的熱門文章

R中Try and Catch的寫法

如何將DSM(NAS)變成Mail Server

如何安裝.tgz的檔案至Ubuntu