Board logo

標題: 請問版上大大,excel可以執行這種資料的暫存嗎?? [打印本頁]

作者: 藍天麗池    時間: 2015-1-20 18:08     標題: 請問版上大大,excel可以執行這種資料的暫存嗎??

本帖最後由 藍天麗池 於 2015-1-20 18:14 編輯

請問版上大大,如果A1=5、B1=4,下一秒A1=7、B1=1,如果我想要在A2、B2得到這一秒跟前一秒的差值(7-5=2、1-4=-3)要怎麼做??
作者: diolin    時間: 2015-1-22 09:40

回復 1# 藍天麗池

要自己把舊的值存起來, 再跟新的值比

概念如下,  再加 column 和 row 的判斷, 就差不多了
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    OldValue= Target.Value
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    NewValue= Target.Value
    '再去計算即可
End Sub
作者: 藍天麗池    時間: 2015-1-26 09:58

回復 2# diolin


    不太懂,可以請大大寫個例子讓我參考嗎??
作者: diolin    時間: 2015-1-27 13:53

回復 3# 藍天麗池

你的需求, 大概是這樣

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Select Case Target.Address
        Case "$A$1": A1 = Target.Value
        Case "$B$1": B1 = Target.Value
    End Select
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case Target.Address
        Case "$A$1": Range("A2") = A1 - Target.Value
        Case "$B$1": Range("B2") = B1 - Target.Value
    End Select
End Sub
作者: GBKEE    時間: 2015-1-28 16:37

本帖最後由 GBKEE 於 2015-1-30 13:18 編輯

回復 1# 藍天麗池
  1. Option Explicit
  2. Option Base 1       '在模組層次中用來宣告陣列索引的預設下限
  3. Dim Ar As Variant   '這模組的絲用便變數
  4. Sub Ex() '下一秒的程式碼
  5.     With Sheets(1)  '指定的工作表
  6.         If Not IsEmpty(Ar) Then
  7.             If Ar(1) <> .[A1] Then .[A2] = .[A1] - Ar(1)
  8.             If Ar(2) <> .[b1] Then .[b2] = .[b1] - Ar(2)
  9.         End If
  10.         Ar = Array(.[A1].Value, .[b1].Value)
  11.     End With
  12. End Sub
複製代碼

作者: 藍天麗池    時間: 2015-1-28 20:51

回復 4# diolin


    D大感謝你
作者: 藍天麗池    時間: 2015-1-28 20:52

本帖最後由 藍天麗池 於 2015-1-28 20:53 編輯

回復 5# GBKEE


    G大消失了一陣子,害我以為這個優質的論壇又少了一位大將,另外請教G大,你跟D大的程式碼是差在哪呢??
作者: 藍天麗池    時間: 2015-1-29 20:16

回復 5# GBKEE


    G大,執行後會出現陣列索引超出範圍??
作者: GBKEE    時間: 2015-1-30 13:26

回復 8# 藍天麗池
程式碼已更新.
由於眼睛長時間的盯看螢幕,急需休養,所以這個月每天開機的時間,僅是看mail,
偶爾還是會在論壇看看.
作者: 藍天麗池    時間: 2015-1-31 10:17

回復 9# GBKEE


    G大要好好保重身體
作者: 藍天麗池    時間: 2015-2-7 09:51

本帖最後由 藍天麗池 於 2015-2-7 10:05 編輯

回復 9# GBKEE

[attach]20226[/attach]如果G大方便的話用這個附件改,原本附件裡面的程式是設定一定時間向下複製,我想要將功能改成以下那樣

    G大我又來請教你了,如果要寫一個程式將B2:C101的值每秒一直重新複製到D2:E101(因為資料會一直變動,所以程式要一直執行從9:00執行到13:30分),請教一下G大要如何寫??(G大可以將每秒寫入的程式碼順便寫在裡面嗎??寫時間的程式我都不太熟,感謝)
作者: GBKEE    時間: 2015-2-7 16:13

回復 11# 藍天麗池
試試看
  1. Sub 時間()
  2.     '將B2:C101的值每秒一直重新複製到D2:E101
  3.     With Sheets("rtd")
  4.         .[D2:E101].Value = .[B2:C101].Value
  5.     End With
  6.     '從9:00執行到13:30分
  7.     If Time > #1:30:00 PM# Then Exit Sub '時間大於>1:30 離開程式
  8.     Application.OnTime Time + TimeValue("00:00:01"), "時間"
  9. End Sub
  10. Sub AUTO_OPEN() '一般模組 於檔案開啟時自動執行的程式
  11.     If Time <= #9:00:00 AM# Then   '9:00 之前
  12.         Application.OnTime TimeValue("09:00"), "時間"
  13.     ElseIf Time >= #9:00:00 AM# And Time <= #1:30:00 PM# Then '9:00 ~13:30 間
  14.         時間   '
  15.     End If
  16. End Sub
複製代碼

作者: 藍天麗池    時間: 2015-2-7 20:58

回復 12# GBKEE


    G大抱歉,如果是附件改的話本身裡面就有設定時間開關了,那請教一下要怎麼把以下的部分換成我要的程式嗎??
Sub RecordPrice()
Dim WR As Long
Dim I As Byte

WR = Range("A1").End(xlDown).Row + 1
[A2] = TimeValue(Now)
For I = 1 To 5
   Cells(WR, I) = Cells(2, I)
Next 'I
End Sub
作者: GBKEE    時間: 2015-2-8 15:26

回復 13# 藍天麗池
你要的不是 B2:C101的值每秒一直重新複製到D2:E101
  1. Sub RecordPrice()
  2.     With Sheets("rtd")
  3.         .[D2:E101].Value = .[B2:C101].Value
  4.     End With
  5. End Sub
複製代碼

作者: 藍天麗池    時間: 2015-2-8 16:46

回復 14# GBKEE


   對阿,我昨天將程式改這樣好像不能run,我在試試看好了,謝謝G大
作者: 藍天麗池    時間: 2015-12-23 19:59

回復 5# GBKEE

G大好久不見,有空的話可以幫幫我嗎??
    http://forum.twbts.com/thread-15967-1-1.html
作者: 藍天麗池    時間: 2015-12-27 16:17

回復 9# GBKEE

http://forum.twbts.com/thread-15967-1-1.html
G大我附檔了,再麻煩妳看看,謝謝




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