來個memo 以免於下次要用還得找網頁
此需求有三個要點
1 定時更新寫入 新的儲存格
使用 Applicatino.ontime( now + Timevalue "00:00:05" , " 程式名")
利用此 排程工具 定時回call 自己 ,當然得在程式中 加入 終止條件 不然 停不了
2 貼上數值型的資料
從網路上找來的
3 不影嚮 正在操作的狀態
程式架構
所有條件參數都來自儲存格
index:目前位置 ,每次回call一次 加 1,為了 使用 offset 指定到下一個儲存點
data : 指定一個被copy的資料區
flag: 終止條件判斷
1 回call 程式
判斷終止條件 並跳開 if endif 就終止排程
讀取 周期 ontime 調整回call頻率
index +1
2 啟動程式
將flag 設成1
call 回call 程式
3 終止程式
將flag 設成0
---- 在程式中加上 開始 停止 指向 start stop
完工
------
Sub test2()
Set a = Worksheets("工作表1")
Set Index = a.Range("A1")
'設定 data 範圍
Set Data = a.Range("c3").Range("A1:F1")
'設定 第一筆資料開始位直
Set head = a.Range("A6")
'設定終止旗標
Set flag = a.Range("B1")
'設定頻率 時間
delaytime_str = a.Range("B2").Value
If flag <> 0 Then
If Index.Value < 10000 Then
' Data.Offset(Index, 0).range("A1:a10).vaue = Data.value
'Data.Range("A1:F1").Copy
'head.Offset(Index.Value, 1).PasteSpecial Paste:=xlPasteValues
'Copy A Range of Data
' 這條比較重要 在不影嚮 excel 操作下 copy 純資料
' 先將 head +offset 位置找到 ,resize( 以 data 的範圍條件設定) 再用 cells.value =
head.Offset(Index.Value, 1).Resize(Data.Rows.Count, Data.Columns.Count).Cells.Value = Data.Range("A1:F1").Cells.Value
' Application.CutCopyMode = False
' 第一欄 寫入時間
head.Offset(Index.Value, 0).Value = Time
' 在下一個時間回call 自己
Application.OnTime Now + TimeValue(delaytime_str), "test2"
' INDEX +1
Index.Value = Index.Value + 1
End If
End If
End Sub
Sub start1()
Set flag = Worksheets("工作表1").Range("B1")
flag.Value = 1
Call test2
End Sub
Sub stop1()
Set flag = Worksheets("工作表1").Range("B1")
flag.Value = 0
End Sub