返回列表 上一主題 發帖

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

本帖最後由 c_c_lai 於 2016-3-22 13:17 編輯

回復 8# 藍天麗池
Sheets  -  shtRTD (RTD)
原本內容:
  1. Option Explicit

  2. Private Sub Worksheet_Calculate()
  3.     Call RecordPrice
  4. End Sub
複製代碼
將它移除掉,修改為:
  1. Option Explicit

  2. Private Sub Worksheet_Change(ByVal Target As Range)
  3.     '  當 B2 欄位有異動時, 則去呼叫 RecordPrice 的方法 (Method)。
  4.     If Target.Address = "$B$2" Then Call RecordPrice
  5. End Sub
複製代碼
假設:
如你欲將原本之 :
  1.   A                  B            C                 D
  2. 時間                總量               
  3. 22:38:54        8734.54        2238        8734.54
複製代碼
更改為從 D 欄開始重新佈局成:
  1.   C                 D             E                 F
  2. 時間                總量               
  3. 22:38:54        8734.54        2238        8734.54
複製代碼
則將上述之 Worksheet_Change 請修正為:
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     '  當 D2 欄位有異動時, 則去呼叫 RecordPrice 的方法 (Method)。
  3.     If Target.Address = "$D$2" Then Call RecordPrice
  4. End Sub
複製代碼
另外, Module1 內之 RecordPrice 裡的模組:
  1. Option Explicit

  2. Sub RecordPrice()
  3.     Dim WR As Long

  4.     If Range("D2") < 1 Then Exit Sub

  5.     WR = Range("A1").End(xlDown).Row + 1
  6.     '  ActiveWindow.ScrollRow = WR - 5           '  只顯示最新幾筆資料
  7.     If (WR = 3) Or _
  8.        (Range("B" & WR - 1) <> Range("B2")) Then '  總量有異動時才記錄
  9.         Cells(WR, 1).Resize(, 3) = [A2:C2].Value
  10.     End If
  11. End Sub
複製代碼
更換為:
  1. Option Explicit

  2. Sub RecordPrice()
  3.     Dim WR As Long

  4.     If Range("F2") < 1 Then Exit Sub

  5.     WR = Range("C1").End(xlDown).Row + 1
  6.     '  ActiveWindow.ScrollRow = WR - 5           '  只顯示最新幾筆資料
  7.     If (WR = 3) Or _
  8.        (Range("D" & WR - 1) <> Range("D2")) Then '  總量有異動時才記錄
  9.         Cells(WR, 3).Resize(, 3) = [C2:E2].Value
  10.     End If
  11. End Sub
複製代碼

TOP

本帖最後由 藍天麗池 於 2016-4-7 22:50 編輯

回復 11# c_c_lai

股票.rar (18.4 KB)

C大再請教你一下,我之前的程式碼是設定為某一個值變動就紀錄,那想請教一下C大如果我的變動值變多個的化程式碼要如何更改??

例:如圖所示,如果C2變動就往下紀錄B2-C2,但是其他不紀錄,下個時間C2沒變動換E2變動,則記錄D2-E2,一樣其他不紀錄,以此類推,我的變動值原本只有設定If (WR = 3) Or _  (Range("C" & WR - 1) <> Range("C2")) Then '總量有異動時才記錄,我現在要設定多個,所有量的部分都設定為變動就紀錄,要如何更改程式碼呢??

TOP

回復 12# 藍天麗池
不太明瞭 "如果C2變動就往下紀錄B2-C2,但是其他不紀錄",是甚麼意思?
你的 RecordPrice() 一次便寫入 A:U 啊。何謂 "其他不紀錄" ?

TOP

回復 13# c_c_lai

C大,因為每支股票的成交時間不太一樣,所以要分開寫入,不然計算上會有重疊

假設台積電9:01分有成交,其他沒成交,如果全部往下寫入,其他的沒成交也會寫入,這樣造成每支股票的成交量在計算上會重複,而且如果分開寫入資料量也互比較少不是嗎??

TOP

回復 14# 藍天麗池
是這樣嗎?

TOP

本帖最後由 藍天麗池 於 2016-4-8 10:15 編輯

回復 15# c_c_lai


    C大,沒錯,但是可以讓中間的空格不見,也就是說資料是連續的,以台積電來說上圖示出現在B10-C11,讓資料連續,出現在B8-C9,這樣可以嗎??

TOP

回復 16# 藍天麗池
那[A] 時間豈不被後者敷蓋?

TOP

回復 16# 藍天麗池
Like this?

TOP

回復 17# c_c_lai
股票-1.rar (18.51 KB)

我是打算之後多一欄來寫入時間,讓每個時間都分開,C大怎麼看??

TOP

回復 18# c_c_lai


    對

TOP

        靜思自在 : 受人點水之恩,須當湧泉以報。
返回列表 上一主題