標題:
[發問]
請問如何將變動的數值在另一頁紀錄?(請幫忙修改,謝謝)
[打印本頁]
作者:
Brandy
時間:
2012-12-18 11:58
標題:
請問如何將變動的數值在另一頁紀錄?(請幫忙修改,謝謝)
我想在Monitor頁的第二列數值改變時,在History頁貼上,並且一直往下紀錄,如同券商軟體的分時明細
如果我在Monitor頁裡的A2打123,然後再改成456,
則在History頁裡出現 456
123
請問這一段要怎麼改
[attach]13588[/attach]
Private Sub Worksheet_Change(ByVal Target As Range)
ThisWorkbook.Sheets("History").Rows("2:2").Insert Shift:=xlDown
Sheets("Monitor").Rows("2:2").Copy
Sheets("History").Rows("2:2").PasteSpecial PasteValues
Application.CutCopyMode = False
End Sub
作者:
GBKEE
時間:
2012-12-18 13:31
回復
1#
Brandy
工作表1模組的程式碼 :需將這程式碼複製到工作表1(Monitor)模組中
Private Sub Worksheet_Change(ByVal Target As Range)
Dim A As Integer
If Target.Address(0, 0) = "A2" Then
With Sheets("History")
'*** 則在History頁裡出現 456***
'如: 從不含.[B2] 開始
A = .Cells(.Rows.Count, "B").End(xlUp).Row
A = IIf(A <= 2, 3, A + 1)
.Cells(A, "B") = Target
End With
End If
End Sub
複製代碼
作者:
stillfish00
時間:
2012-12-18 13:46
回復
1#
Brandy
這行錯了
Sheets("History").Rows("2:2").PasteSpecial PasteValues
應是
Sheets("History").Rows("2:2").PasteSpecial xlPasteValues
或改成這樣
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "A2" Then '判斷當A2有變動時
Sheets("Monitor").Rows("2:2").Copy
Sheets("History").Rows("2:2").Insert Shift:=xlDown
Application.CutCopyMode = False
End If
End Sub
複製代碼
作者:
Brandy
時間:
2012-12-18 16:43
回復
2#
GBKEE
謝謝您的回覆,請問如果是整列之中只要有一格有變化要怎麼改呢?
還有我在儲存格貼上券商的rtd如下
=RTD("money.excel",,"*SYSTEM","ServerTime")
我知道儲存格沒變化,所以不會有效果
那怎麼讓它也能一樣複製貼上在新的一列
謝謝
作者:
GBKEE
時間:
2012-12-18 16:48
回復
4#
Brandy
If Target.Row = 2 Then '修改看看
複製代碼
作者:
Brandy
時間:
2012-12-18 17:02
回復
3#
stillfish00
謝謝您的回覆,請問如果是第二列或是第三列的任何一個儲存格有變化的話,要怎麼改,謝謝
作者:
stillfish00
時間:
2012-12-18 19:56
回復
6#
Brandy
我是不曉得券商RTD是怎麼工作的
本來想回答:
If Target.Row = 2 Or Target.Row = 3 Then
但是其實這還要看你
變動的儲存格是怎麼給值
的 , 以及你
觸發的需求
如 [A1:C2] 一個一個Cell給值跟範圍給值(如[A1:C2]=Array(1, 2, 3, 4, 5, 6)) ,
它觸發Worksheet_Change的次數不一樣 ,
當然Target也不一樣 (可能單格或多格)
比較保守的方法是利用Intersect判斷比較不會漏掉 , 如:
If Not Application.Intersect(Range("2:3"), Target) Is Nothing Then
但還是老話 , 要看實際使用時的觸發需求
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)