標題:
請教如何將DDE資料貼上sheet2的儲存格
[打印本頁]
作者:
Apple007
時間:
2014-12-21 03:47
標題:
請教如何將DDE資料貼上sheet2的儲存格
本帖最後由 Apple007 於 2014-12-21 03:50 編輯
請教各位前輩要如何將如圖股票資料,C欄為DDE成交量date,我要將成交量變動大於100張時,貼上sheet2的C3儲存格,第二筆貼上下一列C4,.....依序逐筆往下貼上,如圖所示!請問要如何編寫程式,謝謝~ps.因剛註冊權限尚淺可否請大大貼上來頁面,謝謝!
作者:
ashan0418
時間:
2014-12-22 16:13
回復
1#
Apple007
將以下貼至Sheet1的物件類別模組中
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Column = 3 And .Value > 100 Then
Target.Offset(, -2).Resize(, 3).Copy Sheets("sheet2").[e65535].End(xlUp).Offset(1, -2)
End If
End With
End Sub
複製代碼
作者:
Apple007
時間:
2014-12-24 15:16
回復
2#
ashan0418
感謝ashan0418大,我現在有一個問題:就是在手動輸入>100時是正常的,但如果盤中透過DDE的資料跳動變動量(>100時),卻不會輸出到sheet2,不知大大是否能有其他解決的方式,可以判斷此種自動資料變動的程式寫法,thank you!!
作者:
ashan0418
時間:
2014-12-24 15:40
回復
3#
Apple007
您是指資料是整批匯入的嗎??
作者:
Apple007
時間:
2014-12-26 11:25
本帖最後由 Apple007 於 2014-12-26 11:27 編輯
回復
4#
ashan0418
資料是約每十秒即時更新,我excel檔[attach]19951[/attach]有dde的連結,安裝這http://www.sinotrade.com.tw/ec/eleader1/setup_eLeader.exe看盤軟體(Testname:B133043133),在盤中C欄的成交量就會變動.
作者:
GBKEE
時間:
2014-12-26 16:04
本帖最後由 GBKEE 於 2014-12-29 15:43 編輯
回復
5#
Apple007
手動輸入>100時是正常的
會觸動 Worksheet_change(ByVal Target As Range) 工作表有修改事件程式
盤中透過DDE的資料跳動變動量(>100時),
儲存格中公式值的變動
會觸動 Sub Worksheet_Calculate() 工作表有重算事件程式
試試看
Dim AR
Private Sub Worksheet_Calculate()
Dim i As Integer
i = 2
Do While i <= Cells(2, "C").End(xlDown).Row
If Not IsError(Cells(i, "C")) Then
If Cells(i, "C") > 100 Then
With Sheets("sheet2").[C65535].End(xlUp).Offset(1).Resize(, 3)
If IsEmpty(AR) Then
.Value = Cells(i, "A").Resize(, 3).Value
ElseIf Cells(i, "C") <> AR(i - 1, 1) Then
.Value = Cells(i, "A").Resize(, 3).Value
End If
End With
End If
End If
i = i + 1
Loop
AR = Range(Cells(2, "C"), Cells(2, "C").End(xlDown))
End Sub
複製代碼
作者:
Apple007
時間:
2014-12-29 14:40
本帖最後由 Apple007 於 2014-12-29 14:43 編輯
回復
6#
GBKEE
GBKEE大您好:我在測試程式時,開啟視窗執行時都會出現如圖執行階段錯誤'13'-型態不符的畫面,將畫面關掉後則可正常執行程式,,不知哪邊出問題,可否請GBKEE大幫我查看看,謝謝!!
作者:
GBKEE
時間:
2017-5-25 14:41
回復
7#
Apple007
試試看
Private Sub Worksheet_Calculate()
Dim i As Integer
For i = 2 To [C65535].End(xlUp).Row
If IsNumeric(Cells(i, "C")) Then
If Cells(i, "C") > 100 Then
Sheets("sheet2").[C65535].End(xlUp).Offset(1).Resize(, 3) = Cells(i, "A").Resize(, 3).Value
End If
End If
Next
End Sub
複製代碼
作者:
Apple007
時間:
2017-5-26 12:50
回復
8#
GBKEE
GBKEE大大您好:更新碼已無執行階段'13'錯誤問題,但資料變動時會有重複貼資料至sheet2,如圖:[attach]27228[/attach]
請大大在幫我看一下,thanks~
作者:
GBKEE
時間:
2017-5-26 20:05
本帖最後由 GBKEE 於 2017-5-26 20:07 編輯
回復
9#
Apple007
再試試看
Private Sub Worksheet_Calculate()
Dim i As Integer
For i = 2 To [C65535].End(xlUp).Row
If IsNumeric(Cells(i, "C")) Then
'C欄為成交量>100 ,D欄為成交總量 > F輔助欄記錄成交總量(**->成交量有變動**)
If Cells(i, "C") > 100 And Cells(i, "D") > Cells(i, "F") Then
Cells(i, "F") = Cells(i, "D") 'F輔助欄記錄成交總量
Sheets("sheet2").[C65535].End(xlUp).Offset(1).Resize(, 3) = Cells(i, "A").Resize(, 3).Value
End If
Else '為開盤前清理F輔助欄
Cells(i, "F") = "" 'F輔助欄記錄成交總量
End If
Next
End Sub
複製代碼
作者:
Apple007
時間:
2017-5-27 10:00
回復
10#
GBKEE
昨晚用盤後期貨盤去測試,已經可以了,非常感謝GBKEE大.
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)