返回列表 上一主題 發帖

[發問] 請問如何將以連接EXCEL的DDE數據每分鐘紀錄下來?

回復 7# j1221
   
  1. Private Sub Achange()
  2.     Dim TimeRange As Range, Rng As Range, R As Range
  3.     With Sheet2
  4.         Set TimeRange = .[A:A].Find(TimeSerial(Hour(Time), Minute(Time), 0), LookIn:=xlFormulas)
  5.         Set Rng = TimeRange.Offset(, 1).Resize(1, 6)
  6.     End With
  7.     Rng.Value = Sheet1.[C2:H2].Value
  8.     If Time > TimeValue("13:45:00") Then Exit Sub
  9.     Application.OnTime Now + TimeValue("00:01"), "ThisWorkbook.change"
  10. End Sub
複製代碼

TOP

回復 6# GBKEE


謝謝GBKEE大,

我改了,也在剛剛試了,可是卻還是跳出同樣的錯誤訊息,是否是因為我在sheet3有外加圖表的問題?

可否附上附件,請您再幫我看一下?

DDE(Yeswin).rar (18.53 KB)

我愛麻辣家族討論區!!

TOP

回復 5# j1221
下週一 08:45 前開啟檔案測試看看
  1. Private Sub Workbook_Open()
  2. Sheet2.[B7:G307] = ""
  3. If Time >= TimeValue("08:45:00") And Time <= TimeValue("13:45:00") Then
  4. change
  5. Else
  6. Application.OnTime "08:45:00", "ThisWorkbook.change"
  7. End If
  8. End Sub
複製代碼

TOP

回復 4# GBKEE

感謝GBKEE大的回答

我已經改好了。

我是在開盤前,就打開excel檔,我sheet2上的第一個時間是8:45,所以這就是出問題的原因嗎?

那....請問您我該怎麼克服這個情形?等開盤後再打開excel檔?
我愛麻辣家族討論區!!

TOP

回復 3# j1221
出現「沒有設定物件變數或 With 區塊變數 (錯誤 91)」的訊息.....

請問你測試時的時間是Sheet2的A欄裡有的時間嗎?
2.再挑出我今天關注的某一檔(比如說大台),再將大台的相關資訊指向第二個工作表(sheet 2)

根據你說的 所以->   Set R = Application.Evaluate(Mid(.Range("A3").Formula, 2))
    ** R 是A3的公式 =Data!B2 所指的位置 ->今天關注的某一檔

如果你要
實際上想要記錄的是將Sheet1 的C2-H2記錄至Sheet2的B7-G7

那你改成 Rng.Value = Sheet1.[C2:H2].Value

TOP

本帖最後由 j1221 於 2010-7-2 09:00 編輯

回復 2# GBKEE


先謝謝GBKEE大的回復!!

小弟剛剛試了,貼上程式碼後按F5執行,出現「沒有設定物件變數或 With 區塊變數 (錯誤 91)」的訊息.....
偵錯後,顯示有問題的部份為『Set Rng = TimeRange.Offset(, 1).Resize(1, 6)』,可否請問這是什麼原因呢?

還有另一問想請教您,可否請問您為什麼需要
『Set R = Application.Evaluate(Mid(.Range("A3").Formula, 2))
        'R 是A3的公式 =Data!B2 所指的位置』

因為我實際上想要記錄的是將Sheet1 的C2-H2記錄至Sheet2的B7-G7,然後依時間順序往下記錄
Sheet1!A3 指向Sheet2!B2 只是我為了要方便辨認目前記錄的項目,請問您這樣設定是有什麼特別的作用嗎?

再次謝謝您的幫助
我愛麻辣家族討論區!!

TOP

本帖最後由 GBKEE 於 2010-7-1 17:33 編輯

回復 1# j1221
試試看
  1. Private Sub Workbook_Open()
  2. If Time >= TimeValue("08:45:00") And Time <= TimeValue("13:45:00") Then
  3. Sheet2.[B7:G307] = ""
  4. change
  5. Else
  6. Application.OnTime "09:01:00", "ThisWorkbook.change"
  7. End If
  8. End Sub
  9. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  10. Private Sub change()
  11.     Dim TimeRange As Range, Rng As Range, R As Range
  12.     With Sheet2
  13.         Set TimeRange = .[A:A].Find(Format(TimeSerial(Hour(Time), Minute(Time), 0), "hh:mm"), LookIn:=xlValues)
  14.         Set Rng = TimeRange.Offset(, 1).Resize(1, 6)
  15.         Set R = Application.Evaluate(Mid(.Range("A3").Formula, 2))
  16.         'R 是A3的公式 =Data!B2 所指的位置
  17.     End With
  18.     Rng.Value = R.Offset(, 1).Resize(, 6).Value
  19.     If Time > TimeValue("13:45:00") Then Exit Sub
  20.     Application.OnTime Now + TimeValue("00:01"), "ThisWorkbook.change"
  21. End Sub
複製代碼

TOP

        靜思自在 : 能幹不幹,不如苦幹實幹。
返回列表 上一主題