返回列表 上一主題 發帖

請教接收資料只要產生變動就記錄該怎麼寫

回復 1# laieven


看盤軟體如有成交單總量資料,Calculate事件可參考它來記錄成交單量資料
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 8# laieven



Ex.rar (7.83 KB)

請模擬在 模擬DEE![A2]  輸入成交量
模擬DEE [工作表模組]  的程式碼
  1. Option Explicit
  2. Private Sub Worksheet_Change(ByVal Target As Range)
  3.     With Target.Cells(1)
  4.         If .Address(0, 0) = "A2" Then [b2] = [b2] + .Cells
  5.     End With
  6. End Sub
複製代碼
DEE紀錄 [工作表模組]  的程式碼
  1. Option Explicit
  2. Dim 總成交量 As Integer
  3. Private Sub Worksheet_Calculate()
  4.     If IsError([b2]) Then Exit Sub      'dee 軟體在開盤前重整時會傳回錯誤值
  5.     If Time <= #9:00:00 AM# Then Exit Sub '開盤前不理會
  6.     If 總成交量 <> [E2].Value Then
  7.         Application.EnableEvents = False
  8.         With [C65536].End(xlUp).Offset(1)
  9.             .Cells(1, 1) = Time
  10.             .Cells(1, 2) = [D2]
  11.             .Cells(1, 3) = [E2]
  12.         End With
  13.         總成交量 = [E2]
  14.         Application.EnableEvents = True
  15.     End If
  16. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 11# laieven


   
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 13# laieven
  1. Integer 資料型態Integer 變數係以範圍為 -32,768 到 32,767 之 16 位元 (2 個位元組) 數字的形式儲存。Integer 的型態宣告字元是百分比符號(%)。
複製代碼
  1. Single 資料型態Single (單精度浮點數) 變數係以 IEEE 32 位元 (4 個位元組) 浮點數字的形式儲存,它的範圍在負數的時候是從 -3.402823E38 到 -1.401298E-45,而在正數的時候是從 1.401298E-45 到 3.402823E38。Single 的型態宣告字元為 !。
複製代碼
Integer 不夠用 修改一下
  1. Dim總成交量 As Single
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

那請問~~
1.為何DDE記錄這邊為何好像沒有 觸 ...
laieven 發表於 2015/9/15 11:33

你看看有沒有在執行 Worksheet_Calculate
  1. Option Explicit
  2. Dim 總成交量 As Single
  3. Private Sub Worksheet_Calculate()
  4.     If IsError([b2]) Then Exit Sub      'dee 軟體在開盤前重整時會傳回錯誤值
  5.     If Time <= #8:45:00 AM# Then Exit Sub  '開盤前不理會
  6.     If 總成交量 <> [E2].Value Then
  7.         Application.EnableEvents = False
  8.         Stop  '程式暫停在這裡 按F8逐步執行程式碼.
  9.         'Stop 給你觀察 DDE記錄有觸發紀錄,程式正常後,刪掉它
  10.         With [C65536].End(xlUp).Offset(1)
  11.             .Cells(1, 1) = Time
  12.             .Cells(1, 2) = [D2]
  13.             .Cells(1, 3) = [E2]
  14.         End With
  15.         總成交量 = [E2]
  16.         Application.EnableEvents = True
  17.     End If
  18. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 17# laieven
'?? 10口以上的位置  自己設
'?? 10口以下的位置  自己設
  1. If 總成交量 <> [E2].Value Then
  2.         Application.EnableEvents = False
  3.         If 成交單 >= 10 Then
  4.             With [??].End(xlUp).Offset(1) '?? 10口以上的位置
  5.                 .Cells(1, 1) = Time
  6.                 .Cells(1, 2) = [成交單]
  7.             End With
  8.         Else
  9.             With [??].End(xlUp).Offset(1) '?? 10口以下的位置
  10.                 .Cells(1, 1) = Time
  11.                 .Cells(1, 2) = [成交單]
  12.             End With
  13.         End If
  14.         總成交量 = [E2]
  15.         Application.EnableEvents = True
  16.     End If
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 20# laieven
我也沒有成交單  
[成交單]-你須自己修改為工作表上DEE成交單的位置
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 GBKEE 於 2015-9-16 17:01 編輯

回復 24# laieven

試試看


Ex.rar (16.88 KB)
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 GBKEE 於 2015-9-21 05:43 編輯

回復 26# laieven
你附檔00000002.xlsm 的程式碼
  1. Option Explicit
  2. Dim 總成交量 As Single
  3. Private Sub Worksheet_Calculate()
  4.     Dim startTime, stopTime
  5.     Dim Rng As Range, 成交單 As Range
  6.     startTime = Range("A1") '開盤時間, 例如: "09:00:00 AM"
  7.     stopTime = Range("B1")  '收盤時間, 例如: "01:30:00 PM"
  8.     If Time <= startTime Then
  9.         '清理昨日紀錄
  10.         Application.EnableEvents = False
  11.         Range(Range("A5:E5"), Range("A5:E5").End(xlDown)) = ""
  12.         Application.EnableEvents = True
  13.         Exit Sub '尚未開盤
  14.     End If
  15.     If Time > stopTime Then Exit Sub '已經收盤
  16.     If IsError([b2]) Then Exit Sub      'dee 軟體在開盤前重整時會傳回錯誤值
  17.     Set 成交單 = [G2]
  18.     Application.EnableEvents = False
  19.     With [A65536].End(xlUp)
  20.         If Format(.Cells, "HH:MM") <> Format(Time, "HH:MM") Then
  21.             'dde紀錄工作表上,要有一個DEE的時間公式,引發這 Calculate 重算事件
  22.             Set Rng = .Offset(1)
  23.         Else
  24.             Set Rng = .Cells
  25.         End If
  26.     End With
  27.     With Rng
  28.         .Cells = Format(Time, "HH:MM")  '在A欄中記下每一分鐘 , 不管有無成交
  29.         If 總成交量 <> [H2].Value Then
  30.             If 成交單 >= 10 Then
  31.                 .Range("B1") = .Range("B1") + 成交單
  32.             Else
  33.                 .Range("D1") = .Range("D1") + 成交單
  34.             End If
  35.             總成交量 = [H2]
  36.         End If
  37.         '這分鐘 -上一分鐘
  38.         If .Cells.Row > 5 Then
  39.             .Range("C1") = .Range("B1") - .Range("B1").Offset(-1)
  40.             .Range("E1") = .Range("D1") - .Range("D1").Offset(-1)
  41.         Else
  42.             .Range("C1") = .Range("B1")
  43.             .Range("E1") = .Range("D1")
  44.         End If
  45.     End With
  46.     Application.EnableEvents = True
  47. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 不怕事多,只怕多事。
返回列表 上一主題