返回列表 上一主題 發帖

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

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

本帖最後由 藍天麗池 於 2016-3-17 23:24 編輯

除錯.rar (36.73 KB)
請問版上大大,我上傳的附件是一個價格變動就記錄的VBA,但是我在執行附件裡面的Macro1時,應該資料會刪掉,可是執行完後不但不會刪掉,還會馬上出現很多一樣的資料,請版上大大幫我看看這個語法有甚麼問題嗎??

我發現把旁邊的公式刪掉就正常了,這是什麼原因??可以修改成價格變動就紀錄且同時保有旁邊的公式嗎??


DDE如果沒有可以用隨便的數字下去測試

http://forum.twbts.com/viewthread.php?tid=15062&highlight=

用 Worksheet_Calculate 事件!
是可以,但考慮層面較多,例如會產生〔連鎖觸動〕,要不是同一筆內容記錄成很多筆,
不然整個檔案就掛掉,您必須去控制事件發生的時機,在下載附檔中有個例子,可參考!
EXCEL參考資料:
http://blog.xuite.net/smile1000mile/blog

TOP

回復 2# 准提部林


    大大謝謝你的好意,但我不會寫,只會簡單的修改,沒有範例就沒辦法了,不過還是謝謝你

TOP

回復 1# 藍天麗池
改用 Change 試試看!
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     If Target.Address = "$B$2" Then Call RecordPrice
  3. End Sub
複製代碼

TOP

回復 4# c_c_lai
好,謝謝C大

TOP

回復 4# c_c_lai

C大請教一下這段程式碼要加在哪裡??

TOP

本帖最後由 c_c_lai 於 2016-3-22 06:53 編輯

回復 6# 藍天麗池
取代你原先 Sheets("RTD") 裡的 Worksheet_Calculate()。
又,你 目前 "模組1" RecordPrice 裡的 For ~ Next 運算式可以
用下列方式取代,以節省處裡時間:
  1.    '  For I = 1 To 3
  2.    '      Cells(WR, I) = Cells(2, I)
  3.    '  Next I
  4.    Cells(WR, 1).Resize(, 3) = [A2:C2].Value
複製代碼

TOP

本帖最後由 藍天麗池 於 2016-3-22 08:32 編輯

回復 7# c_c_lai

1.jpg
2016-3-22 08:26
2.jpg
2016-3-22 08:26

  1.  C大我不太懂,為什麼多了Cells(WR, 1).Resize(, 3) = [A2:C2].Value這一行程式碼執行數度會加快??

2.另外再請教你一個問題,如果目前是將A2-C2的資料往下寫,改成把資料放在C2-E2然後往下寫要怎麼改程式碼??
就是將圖一改成圖二,上圖不是改好的,是我用拉的

3.以下是J大寫的,請教C大用Excel.Application.EnableEvents 跟你的用change哪種比較快??
Excel.Application.EnableEvents = 0
WR = Range("A1").End(xlDown).Row + 1
'ActiveWindow.ScrollRow = WR - 5 '只顯示最新幾筆資料
If (WR = 3) Or _
   (Range("B" & WR - 1) <> Range("B2")) Then '總量有異動時才記錄
    For I = 1 To 3
    Cells(WR, I) = Cells(2, I)
    Next
End If
Excel.Application.EnableEvents = 1

TOP

回復 8# 藍天麗池
先回答你第一個問題:
  1. If (WR = 3) Or _
  2.     (Range("B" & WR - 1) <> Range("B2")) Then ' 總量有異動時才記錄
  3.      For I = 1 To 3
  4.          Cells(WR, I) = Cells(2, I)
  5.      Next
  6. End If
複製代碼
從 For ~ Next 改為下列一次功夫就填入值 (Assign Value) 的方式,
你說是哪個處理較快速?
  1. If (WR = 3) Or _
  2.     (Range("B" & WR - 1) <> Range("B2")) Then ' 總量有異動時才記錄
  3.     Cells(WR, 1).Resize(, 3) = [A2:C2].Value
  4. End If
複製代碼

TOP

回復 9# c_c_lai


    C大我會錯意了,剛剛沒看到你前面有 ',把程式mark掉所以我才覺得奇怪,看到後就沒問題了

TOP

        靜思自在 : 忘功不忘過,忘怨不忘恩。
返回列表 上一主題