- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
回復 29# andylin
收市前有效 試試看- 'ThisWorkbook模組的程序
- Private Sub Workbook_Open() '此程式是檔案開啟時自動執行的程式
- If MsgBox("啟動自動記錄資料??", vbYesNo) = vbNo Then Exit Sub
- Sheets("1分K").UsedRange.Offset(1, 1) = "" ' 清除昨日資料
- Sheets("5分K").UsedRange.Offset(1, 1) = ""
- Sheets("15分K").UsedRange.Offset(1, 1) = ""
- If Time >= #8:46:00 AM# And Time <= #1:30:00 PM# Then '開市時間內開檔
- 資料輸入
- ElseIf Time < #8:46:00 AM# Then '開市前內開檔
- Application.OnTime #8:46:00 AM#, "ThisWorkbook.資料輸入"
- End If
- End Sub
- Sub 資料輸入()
- Dim E As Range
- '''''''''''''''''''''''''''''''''''''
- 'Dim Ar() 'Ar陣列 -> 存入你要的數據
- 'Ar = Sheets("Table").Range("B2:D2").Value
- '''''''''''''''''''''''''''''''''''''
- Dim Ar(1 To 3) 'Ar陣列 -> 存入你要的數據
- Ar(1) = [Table!B2]
- Ar(2) = [Table!C2]
- Ar(3) = [Table!D2]
- If Minute(Time) Mod 1 = 0 Then
- Set E = Sheets("1分K").Range("A:A").Find(TimeSerial(Hour(Time), Minute(Time), 0))
- E.Offset(0, 1).Resize(1, UBound(Ar)).Value = Ar 'Minute(Time) Mod 1=0 每分鐘
- End If
- If Minute(Time) Mod 5 = 0 Then
- Set E = Sheets("5分K").Range("A:A").Find(TimeSerial(Hour(Time), Minute(Time), 0))
- E.Offset(0, 1).Resize(1, UBound(Ar)).Value = Ar 'Minute(Time) Mod 5=0 每5分鐘
- End If
- If Minute(Time) Mod 15 = 0 Then
- Set E = Sheets("15分K").Range("A:A").Find(TimeSerial(Hour(Time), Minute(Time), 0))
- E.Offset(0, 1).Resize(1, UBound(Ar)).Value = Ar 'Minute(Time) Mod 15=0 每15分鐘
- End If
- If Time <= #1:30:00 PM# Then Application.OnTime TimeValue(Format(Time, "hh:MM:00")) + #12:01:00 AM#, "ThisWorkbook.資料輸入"
- ' *** #1:30:00 PM# 之前時間執行程式 ->資料輸入
- Set E = Nothing '
- End Sub
複製代碼 |
|