返回列表 上一主題 發帖

價格紀錄的語法有寫錯嗎??

本帖最後由 GBKEE 於 2016-4-9 10:05 編輯

回復 51# 藍天麗池
須先改為自動重算
  1. Private Sub Workbook_Open()
  2.     Dim xRng As Range, First_Aaddres  As String, xRng_Name As String
  3.     Application.RTD.ThrottleInterval = 0
  4.     Application.Calculation = xlCalculationAutomatic  '自動重算
  5. With Sheets("RTD")
  6.         Set xRng = .Rows(2).Cells.Find("TotalVolume", LookIn:=xlFormulas)
  7.         If Not xRng Is Nothing Then
  8. '
  9. '
  10.    
複製代碼
  1. Sub Ex()
  2.     Dim i As Integer
  3.     With Sheets("RTD")
  4.         .Range("a" & Rows.Count) = "=a1"   '啟動第一次 Worksheet_Calculate
  5.         i = 1
  6.         For i = 1 To i * 4 * 8 Step 2
  7.             With .Cells(Rows.Count, 4 * i).End(xlUp).Offset(1)
  8.                 .Value = Int((500 - 100 + 1) * Rnd + 100)
  9.                 '總量名稱所在的最底列往上到有資料的儲存格給亂數
  10.                 ''因沒營業DEE不會變動,所以給個亂數
  11.                 '等同DEE總量有變動
  12.             End With
  13.             .[a1] = i                  ' 公式值再度變動啟動 Worksheet_Calculate
  14.         Next
  15.     End With
  16. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 61# GBKEE

G大,我更改後手動輸入還是沒動作

TOP

回復 62# 藍天麗池
有設為自動重算嗎?
  1. Applicaion.Calculation = xlCalculationAutomatic  '自動重算
複製代碼
手動是執行所給的Ex程式嗎?
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 63# GBKEE


    有改,手動是改成交量,不是執行程式,他不會自動執行嗎?

TOP

回復 60# 藍天麗池
股票10:

shtRTD(RTD) 工作表單內容:
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     '  當 Target (總量) 欄位有異動時, 則去呼叫 RecordPrice 的方法 (Method)。
  3.    
  4.     If Target.Row = 2 And Target.Column Mod 4 = 0 Then
  5.         Call RecordPrice(Target.Address)
  6.     End If
  7. End Sub
複製代碼
Module1 模組內容:
  1. Sub RecordPrice(TG As String)
  2.     Dim WR As Long
  3.    
  4.     If Range("A1") < 1 Then Exit Sub
  5.     '  ActiveWindow.ScrollRow = WR - 5           '  只顯示最新幾筆資料
  6.    
  7.     WR = Range(Left(TG, Len(TG) - 1) & Rows.Count).End(xlUp).Row + 1       '  求取該異動欄位的最後一筆紀錄列位置
  8.    
  9.     Range(Left(TG, Len(TG) - 1) & WR).Offset(, -3).NumberFormatLocal = "hh:mm:ss"   '  設定儲存格格式 (時間)
  10.    
  11.     Range(Left(TG, Len(TG) - 1) & WR) = Range(TG)                            '  可處裡到 AA 以後的欄位 (總量)
  12.     Range(Left(TG, Len(TG) - 1) & WR).Offset(, -1) = Range(TG).Offset(, -1)  '  可處裡到 AA 以後的欄位 (成交)
  13.     Range(Left(TG, Len(TG) - 1) & WR).Offset(, -3) = Range(TG).Offset(, -3)  '  寫入異價時間 (時間)
  14. End Sub

  15. Sub 時間()
  16.     Dim i As Integer
  17.    
  18.     For i = 1 To 400 Step 4
  19.         Cells(2, i) = WorksheetFunction.Text(Now(), "hh:mm:ss")
  20.     Next i
  21.    
  22.     Application.OnTime Now() + TimeValue("00:00:01"), "時間"
  23. End Sub

  24. Sub Cls()
  25.     Range("A3:OK5000").ClearContents
  26.     Range("A3").Select
  27. End Sub
複製代碼

TOP

回復 60# 藍天麗池
股票10.rar (22.15 KB)

TOP

回復 60# 藍天麗池
我覺得當 WR 等於 3 時,應加入判斷,否則在後續處裡會有瑕玼:
  1.     If WR = 3 Or Range(Left(TG, Len(TG) - 1) & WR - 1) <> Range(TG) Then
  2.         Range(Left(TG, Len(TG) - 1) & WR).Offset(, -3).NumberFormatLocal = "hh:mm:ss"   '  設定儲存格格式 (時間)
  3.         
  4.         Range(Left(TG, Len(TG) - 1) & WR) = Range(TG)                            '  可處裡到 AA 以後的欄位 (總量)
  5.         Range(Left(TG, Len(TG) - 1) & WR).Offset(, -1) = Range(TG).Offset(, -1)  '  可處裡到 AA 以後的欄位 (成交)
  6.         Range(Left(TG, Len(TG) - 1) & WR).Offset(, -3) = Range(TG).Offset(, -3)  '  寫入異價時間 (時間)
  7.     End If
複製代碼

TOP

回復 67# c_c_lai
DEE公式值的變動,儲存格內公式參照其他工作表,計算後值的改變.
不會觸發 Private Sub Worksheet_Change(ByVal Target As Range)事件程式

回復 64# 藍天麗池
手動是改成交量,需是 (DEE公式 或 儲存格內公式 ) 值的改變
1 請複製39帖的 Private Sub Workbook_Open() 到ThisWorkbook模組後執行一次
2 請複製39帖的Private Sub Worksheet_Calculate() 到Sheets("RTD") 模組
3請在 Sheets("RTD")上有DEE總量公式的 D2,H2,,, 輸入公式=工作表2!A1
4請在 工作表2!A1輸入>0的任意數值
5看看 Sheets("RTD")的變動
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 68# GBKEE
我從未使用過 Private Sub Worksheet_Calculate()
它是怎麼運作?
DDE 匯入值變動時不會觸發 Worksheet_Change 嗎?
我是沒實際觀測過,因為平常我也不太使用它。之前
我比較偏向應用軟體分析與運作方面,謝謝您告知!

TOP

回復 68# GBKEE
假設 DDE 的匯入值異動不會觸發 _Change() 的話:
為了要解決此案例,我會增加第三列作為觸動列,
即第三列每欄內容為 A3 (=A2), B3 (=B2), C3 (=C2),. . . . .
如此便能觸發事件了。
寫入之資料則改從第四列開始判斷寫入。

TOP

        靜思自在 : 【停滯不前,終無所得】人都迷於尋找奇蹟,因而停滯不前;縱使時間再多、路再長,也了無用處,終無所得。
返回列表 上一主題