Board logo

標題: 紀錄股票開盤單量值 [打印本頁]

作者: ken2192    時間: 2015-9-15 22:36     標題: 紀錄股票開盤單量值

本帖最後由 GBKEE 於 2015-9-16 07:05 編輯

各位版友好,
因在寫Excel vba時,遇到一個程式不知如何完成,如下
1.目的在於要記錄個股股票的開盤量的值,也就是說將DDE I欄第一筆變化的值記錄到H欄中,之後就不隨I欄變化。
2.因股票有10-20檔左右,H欄為各自變化的第一筆量。

請大大提供相關的程式,給小弟我當作一個範本!!
作者: GBKEE    時間: 2015-9-16 07:08

回復 1# ken2192
試試看
  1. '自選股 工作表模組
  2. Option Explicit
  3. Private Sub Worksheet_Calculate()
  4.     Dim Rng As Range, E As Range
  5.     Set Rng = Range("A2", Range("A2").End(xlDown)).Columns("H") 'H欄(第一筆量)的位置
  6.     If Time < #9:00:00 AM# Then
  7.         Rng = ""      '清空H欄的第一筆量
  8.     ElseIf Time >= #9:00:00 AM# And Rng.Count <> Application.Count(Rng) Then
  9.          'H欄的個數<>H欄有數字的個數,還有股票第一筆量沒有輸入
  10.         For Each E In Rng.Cells
  11.             If E = "" And E.Cells(1, 2) > 0 Then E = E.Cells(1, 2)
  12.         Next
  13.     End If
  14. End Sub
複製代碼

作者: ken2192    時間: 2015-9-23 15:06

感恩不盡,但經過測試,09:00開盤後,H欄並不會自動跑出數字出來!!
以下我在詳述我需要的功能,因在網路和此討論版並沒有看過類似的vba,所以沒有可以參考的程式,請版主是否可以依照下列的描述寫出簡單符合的vba,感恩不盡!!
1.目的在於要記錄個股股票的開盤量的值,也就是說將DDE "I欄"(I9以下的股票)第一筆變化的值記錄到"H欄"中,之後就不隨"I欄"變化。
2."I欄"在開盤前都是為零,9:00之後會開始跳動。但每支股票開始跳動的時間並不一樣。如I9跳動時間可能是09:05,I10跳動的時間為09:18之類的,各自依照不同時間的第一筆量記錄在H欄位中。

以下是我從看盤軟體連結到excel的檔案,請參考!!
[attach]22061[/attach]
作者: GBKEE    時間: 2015-9-24 09:14

回復 3# ken2192

你測試看看
  [attach]22077[/attach]
作者: pq2880    時間: 2015-9-30 10:17

Worksheets("DDE").Range("j1")=""
If Worksheets("DDE").Range("j1")<> Worksheets("DDE").Range("i1") and
Worksheets("DDE").Range("j1")>0 Then '以 j1 成交量判斷是否有交易
Worksheets("DDE").Range("j1")= Worksheets("DDE").Range("i1")
end if
' Worksheets("DDE").Range("i1") 跟 DDE 資訊源連結
作者: ken2192    時間: 2015-10-16 16:29

感恩GBKEE 版主,最近反覆測試幾次,依然無法在09:00開盤後自動紀錄開盤量也不會在09:00之前清除紀錄欄位,但如果是手動啟動的話就會有值,以下是我套用在我的excel上的程式,是否問題是出在要寫入自動啟動程式的function!!

Option Explicit
'自選股 工作表模組
Private Sub AWorksheet_Calculate()
    Dim Rng As Range, E As Range
    On Error Resume Next
    If IsError([A9]) Then Exit Sub  '檔案開啟時DEE會傳回 @N/A
    If Time < #9:00:00 AM# Then
        Set Rng = UsedRange.SpecialCells(xlCellTypeFormulas, xlErrors)
        If Not Rng Is Nothing Then Debug.Print Time, Not Rng Is Nothing
            With Range("A9", Range("A9").End(xlDown))
                .Columns("K") = ""    ''清空H欄的第一筆量
            End With
        Exit Sub
    End If
    Set Rng = Range("A9", Range("A9").End(xlDown)).Columns("K") 'K欄(第一筆量)的位置
    If Time >= #9:00:00 AM# And Rng.Count <> Application.Count(Rng) Then
       '  K欄的個數<>K欄有數字的個數,還有股票第一筆量沒有輸入
        Application.EnableEvents = False
        For Each E In Rng.Cells
            If E = "" And E.Cells(1, 2) > 0 Then
                E = E.Cells(1, 2)
        End If
        Next
        Application.EnableEvents = True
    End If
End Sub
作者: GBKEE    時間: 2015-10-17 13:57

回復 6# ken2192

抱歉附檔了一個A
  1. '自選股 工作表模組
  2. Private Sub Worksheet_Calculate()
複製代碼
請修改再試試看
作者: ken2192    時間: 2015-10-19 17:24

感恩GBKEE ,今天早上測試結果是有自動跑出開盤量出來,但只有一檔股票,也就是9點開盤後最快顯示出開盤量的股票(於09:00:01, 3673 109張),其餘檔的股票並沒有依序跑出該開盤量,因為其他開盤量都在09:00:01後才出現,是否問題出在要修改成獨立事件?




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)