- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
12#
發表於 2012-6-12 14:13
| 只看該作者
回復 11# devidlin
可參考一下- 'DDE 資料紀錄問題 在'一般模組(Module1)的程式碼
- Option Explicit
- Dim 開盤 As Range, 收盤 As Range, 間隔 As Range, 次數 As Range, Time_Dee As Date
- '------在一般模組(Module1)不起作用的----------------
- 'Private Sub Workbook_Open() '是 ThisWorkbook的程序 此活頁簿關閉時 自動執行的程式
- 'Private Sub Workbook_BeforeClose(Cancel As Boolean) '是 ThisWorkbook的程序 此活頁簿關閉時 自動執行的程式
- '---------------------------------------------------
- Private Sub Auto_Open() '---* 一般模組(Module1)的程序 此活頁簿開啟時 自動執行的程式
- StartProcedure
- End Sub
- Private Sub Auto_Close() '---* 一般模組(Module1)的程序 此活頁簿關閉時 自動執行的程式
- StopProcedure
- ThisWorkbook.Save
- End Sub
- Sub StartProcedure()
- '----- 可設 按鈕 指定此巨集手動應用-------
- '------啟動 Dee_Set 程序的 執行巨集-------
- If 收盤 Is Nothing Then Time_Set '變數未設定
- If Sheets("Sheet1").[A2] <> Date Then Sheets("Sheet1").UsedRange.Offset(1) = ""
- '當日第一此開啟檔案 清除就有Dee資料
- If Time > 收盤 Then '已過 收盤時間
- MsgBox "已過 " & 收盤
- Else '未到 收盤時間
- If Time >= 開盤 And Time <= 收盤 Then '股市交易時間內
- If Time_Dee > 開盤 Then Exit Sub '預防重復:' 下次執行 Dee_Set 的時間大於開盤時間
- Dee_Set
- Else '未開盤前
- 次數 = 0 '清除昨日紀錄 DEE 次數
- Time_Dee = #8:30:00 AM#
- Application.OnTime Time_Dee, "Dee_Set"
- MsgBox "預定 於 " & #8:30:00 AM# & "更新 Dee資料"
- End If
- End If
- End Sub
- Sub StopProcedure()
- '----- 可設 按鈕 指定此巨集手動應用-------
- '------停止 Dee_Set 程序的 執行巨集-------
- On Error Resume Next
- Application.OnTime Time_Dee, "Dee_Set", , False
- Time_Dee = #12:00:00 AM# '下次執行 Dee_Set 的時間: 小於開盤時間
- End Sub
- Private Sub Time_Set() '變數 設定
- With Sheets("DATA")
- Set 開盤 = .Range("X5") '開盤時間
- Set 收盤 = .Range("Y5") '收盤時間
- Set 次數 = .Range("X6") '紀錄 DEE 次數
- Set 間隔 = .Range("Y6") '匯入DEE的 時間間隔
- 開盤 = "8:30:00"
- 收盤 = "13:30:00"
- If 間隔 = "" Then 間隔 = "00:01:00" '未設未設立 間隔
- End With
- End Sub
- Private Sub Dee_Set()
- If Time > 收盤 Then Exit Sub
- '----------紀錄 DEE -----------
- Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(1, 22).Value = Sheets("DATA").[A2:v2].Value
- 次數 = 次數 + 1 ' 切記 Counter (計數器) 要加一,否則永遠為零 (當然已也可以不予紀錄資料列述,依個人習性)。
- Time_Dee = Time + 間隔 '下次執行 Dee_Set 的時間
- Application.OnTime Time_Dee, "Dee_Set"
- End Sub
複製代碼 |
|