標題:
DDE記錄如何複製在不同工作表
[打印本頁]
作者:
jerrystock
時間:
2012-2-16 06:30
標題:
DDE記錄如何複製在不同工作表
看了這篇
DDE數據每分鐘紀錄下來
對於剛接觸VBA不懂的我覺得非常實用
對於如何要記錄 引用GBKEE大大的這句 'R 是A3的公式 =Data!B2 所指的位置 假如這是記錄台指期的DDE 並同時也要記錄電子期與金融期的DDE在不同
的工作表如Sheet5(電子期)與Sheet6(金融期) 不懂的我試著照抄 還是不行請教應該如何做 以下是引用GBKEE大大的VBA 並加入我錯誤的方法
Private Sub Workbook_Open()
If Time >= TimeValue("08:45:00") And Time <= TimeValue("13:45:00") Then
Sheet2.[B7:G307] = ""
change
Else
Application.OnTime "09:01:00", "ThisWorkbook.change"
End If
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub change()
Dim TimeRange As Range, Rng As Range, R As Range
With Sheet2
Set TimeRange = .[A:A].Find(Format(TimeSerial(Hour(Time), Minute(Time), 0), "hh:mm"), LookIn:=xlValues)
Set Rng = TimeRange.Offset(, 1).Resize(1, 6)
Set R = Application.Evaluate(Mid(.Range("A3").Formula, 2))
'R 是A3的公式 =Data!B2 所指的位置
With Sheet5 '電子期我加入的部分
Set TimeRange = .[A:A].Find(Format(TimeSerial(Hour(Time), Minute(Time), 0), "hh:mm"), LookIn:=xlValues)
Set Rng = TimeRange.Offset(, 1).Resize(1, 6)
Set R = Application.Evaluate(Mid(.Range("A3").Formula, 3))
'R 是A3的公式 =Data!B2 所指的位置
With Sheet6 '金融期我加入的部分
Set TimeRange = .[A:A].Find(Format(TimeSerial(Hour(Time), Minute(Time), 0), "hh:mm"), LookIn:=xlValues)
Set Rng = TimeRange.Offset(, 1).Resize(1, 6)
Set R = Application.Evaluate(Mid(.Range("A3").Formula, 4))
'R 是A3的公式 =Data!B2 所指的位置
End With
End With
End With
Rng.Value = R.Offset(, 1).Resize(, 6).Value
If Time > TimeValue("13:45:00") Then Exit Sub
Application.OnTime Now + TimeValue("00:01"), "ThisWorkbook.change"
End Sub
複製代碼
只會記錄最後一個Sheet6 請大大指導該如何加入 謝謝
作者:
GBKEE
時間:
2012-2-16 07:56
回復
1#
jerrystock
幫你多加二句 你是要如此嗎?
Private Sub Workbook_Open()
If Time >= TimeValue("08:45:00") And Time <= TimeValue("13:45:00") Then
Sheet2.[B7:G307] = ""
change
Else
Application.OnTime "09:01:00", "ThisWorkbook.change"
End If
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub change()
Dim TimeRange As Range, Rng As Range, R As Range
With Sheet2
Set TimeRange = .[A:A].Find(Format(TimeSerial(Hour(Time), Minute(Time), 0), "hh:mm"), LookIn:=xlValues)
Set Rng = TimeRange.Offset(, 1).Resize(1, 6)
Set R = Application.Evaluate(Mid(.Range("A3").Formula, 2))
'R 是A3的公式 =Data!B2 所指的位置
Rng.Value = R.Offset(, 1).Resize(, 6).Value ' ***這裡也要: R的數據 指定到 Rng
With Sheet5 '電子期我加入的部分
Set TimeRange = .[A:A].Find(Format(TimeSerial(Hour(Time), Minute(Time), 0), "hh:mm"), LookIn:=xlValues)
Set Rng = TimeRange.Offset(, 1).Resize(1, 6)
Set R = Application.Evaluate(Mid(.Range("A3").Formula, 3))
'R 是A3的公式 =Data!B2 所指的位置
Rng.Value = R.Offset(, 1).Resize(, 6).Value ' ****Sheet6的 這裡也要: R的數據 指定到 Rng
With Sheet6 '金融期我加入的部分
Set TimeRange = .[A:A].Find(Format(TimeSerial(Hour(Time), Minute(Time), 0), "hh:mm"), LookIn:=xlValues)
Set Rng = TimeRange.Offset(, 1).Resize(1, 6)
Set R = Application.Evaluate(Mid(.Range("A3").Formula, 4))
'R 是A3的公式 =Data!B2 所指的位置
Rng.Value = R.Offset(, 1).Resize(, 6).Value 'R的數據 指定到 Sheet6的 Rng
End With
End With
End With
If Time > TimeValue("13:45:00") Then Exit Sub
Application.OnTime Now + TimeValue("00:01"), "ThisWorkbook.change"
End Sub
複製代碼
作者:
jerrystock
時間:
2012-2-17 23:14
本帖最後由 jerrystock 於 2012-2-18 01:04 編輯
回復
2#
GBKEE
非常感謝GBKEE大大的指導 可以記錄了 感恩^^
作者:
jerrystock
時間:
2012-2-19 15:15
不好意思可以請問如果數據一直往下記錄 可以不用拉捲軸看最下方數據
能讓數據往下記錄捲軸跟著往下移動 就可以看到最新記錄而不用拉捲軸嗎?
作者:
GBKEE
時間:
2012-2-19 16:10
回復
4#
jerrystock
Private Sub change()
Dim TimeRange As Range, Rng As Range, R As Range
With Sheet2
Set TimeRange = .[A:A].Find(Format(TimeSerial(Hour(Time), Minute(Time), 0), "hh:mm"), LookIn:=xlValues)
Set Rng = TimeRange.Offset(, 1).Resize(1, 6)
Set R = Application.Evaluate(Mid(.Range("A3").Formula, 2))
'R 是A3的公式 =Data!B2 所指的位置
Rng.Value = R.Offset(, 1).Resize(, 6).Value ' ***這裡也要: R的數據 指定到 Rng
.Activate
Rng.Select
With Sheet5 '電子期我加入的部分
Set TimeRange = .[A:A].Find(Format(TimeSerial(Hour(Time), Minute(Time), 0), "hh:mm"), LookIn:=xlValues)
Set Rng = TimeRange.Offset(, 1).Resize(1, 6)
Set R = Application.Evaluate(Mid(.Range("A3").Formula, 3))
'R 是A3的公式 =Data!B2 所指的位置
Rng.Value = R.Offset(, 1).Resize(, 6).Value ' ****Sheet6的 這裡也要: R的數據 指定到 Rng
.Activate
Rng.Select
With Sheet6 '金融期我加入的部分
Set TimeRange = .[A:A].Find(Format(TimeSerial(Hour(Time), Minute(Time), 0), "hh:mm"), LookIn:=xlValues)
Set Rng = TimeRange.Offset(, 1).Resize(1, 6)
Set R = Application.Evaluate(Mid(.Range("A3").Formula, 4))
'R 是A3的公式 =Data!B2 所指的位置
Rng.Value = R.Offset(, 1).Resize(, 6).Value 'R的數據 指定到 Sheet6的 Rng
.Activate
Rng.Select
End With
End With
End With
If Time > TimeValue("13:45:00") Then Exit Sub
Application.OnTime Now + TimeValue("00:01"), "ThisWorkbook.change"
End Sub
複製代碼
作者:
jerrystock
時間:
2012-2-20 21:58
今天開盤測試真的可以 好高興 !!
實在很佩服GBKEE大大 面對那麼多疑難雜症都難不倒他且回覆速度之快 真的很有才華
在此說聲非感謝您^^
作者:
jerrystock
時間:
2012-2-22 14:09
不好意思又再次麻煩大大 如果我想在Sheet6參照Sheet2開盤價與收盤價2欄位做觀察
希望Sheet6跟著Sheet2變動 能讓數據往下記錄捲軸跟著往下移動
就可以看到最新記錄而不用拉捲軸
希望大大再次指導 謝謝!!
Private Sub change()
Dim TimeRange As Range, Rng As Range, R As Range
With Sheet2
Set TimeRange = .[A:A].Find(Format(TimeSerial(Hour(Time), Minute(Time), 0), "hh:mm"), LookIn:=xlValues)
Set Rng = TimeRange.Offset(, 1).Resize(1, 6)
Set R = Application.Evaluate(Mid(.Range("A3").Formula, 2))
'R 是A3的公式 =Data!B2 所指的位置
Rng.Value = R.Offset(, 1).Resize(, 6).Value
With Sheet6 '固定在Sheet6觀察Shee2數個欄位
.Activate
Rng.Select
End With
End With
If Time > TimeValue("13:45:00") Then Exit Sub
Application.OnTime Now + TimeValue("00:01"), "ThisWorkbook.change"
End Sub
複製代碼
作者:
GBKEE
時間:
2012-2-22 15:23
回復
7#
jerrystock
Option Explicit
Private Sub Worksheet_Calculate() 'Sheet6模組的重算事件
'需先在Sheet6 寫上公式
'如 A2=Sheet2!A1 Sheet2的開盤價
'如 B2=Sheet2!B1 Sheet2的收盤價
'數據從A4往下記錄 例:A4 ="收盤價"
With Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(1, 2)
.Value = [A2].Resize(, 2).Value
.Select
End With
End Sub
複製代碼
作者:
jerrystock
時間:
2012-2-23 12:49
請大大幫我看一下 我用這樣好像不對 我有試過移來移去沒概念不知放在哪裡 但Sheet6我有加
公式 然後Sheet6儲存格有往下拉到Sheet2!B307 麻煩大大了 謝謝
Private Sub Workbook_Open()
If Time >= TimeValue("08:45:00") And Time <= TimeValue("13:45:00") Then
Sheet2.[B7:G307] = ""
change
Else
Application.OnTime "09:01:00", "ThisWorkbook.change"
End If
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub change()
Dim TimeRange As Range, Rng As Range, R As Range
With Sheet2
Set TimeRange = .[A:A].Find(Format(TimeSerial(Hour(Time), Minute(Time), 0), "hh:mm"), LookIn:=xlValues)
Set Rng = TimeRange.Offset(, 1).Resize(1, 50)
Set R = Application.Evaluate(Mid(.Range("A3").Formula, 2))
'R 是A3的公式 =Data!B2 所指的位置
End With
Rng.Value = R.Offset(, 1).Resize(, 50).Value
If Time > TimeValue("13:45:00") Then Exit Sub
Application.OnTime Now + TimeValue("00:01"), "ThisWorkbook.change"
End Sub
Option Explicit
Private Sub Worksheet_Calculate() 'Sheet6模組的重算事件
'需先在Sheet6 寫上公式 已寫上公式
'這裡有加了A7=Sheet2!B7往下拉 Sheet2的開盤價
'這裡有加了B7=Sheet2!C7往下拉 Sheet2的收盤價
'數據從A4往下記錄 例:A4 ="收盤價"
With Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(1, 18)
.Value = [A2].Resize(, 18).Value
.Select
End With
End Sub
複製代碼
作者:
GBKEE
時間:
2012-2-23 13:29
回復
9#
jerrystock
Private Sub Worksheet_Calculate() 'Sheet6模組的重算事件
你是複製在Sheet6模組內嗎? 如果是 還有疑問 請附檔來看看 .
作者:
jerrystock
時間:
2012-2-24 12:09
回復
10#
GBKEE
麻煩大大幫我看看 謝謝
[attach]9709[/attach]
作者:
GBKEE
時間:
2012-2-24 17:13
回復
11#
jerrystock
Private Sub Worksheet_Calculate() 'Sheet6模組的重算事件
Me.Activate '*****加上這程式碼
With Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(1, 9)
.Value = [A7].Resize(, 9).Value
.Select
End With
End Sub
複製代碼
作者:
jerrystock
時間:
2012-2-25 09:57
謝謝GBKEE大大百忙中抽空指導 最近四天連假等開盤再來試試
我想經大大看過應該是沒問題了 感謝您!!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)