close

來個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

 

 

arrow
arrow
    文章標籤
    excel dde
    全站熱搜
    創作者介紹
    創作者 shewerlu 的頭像
    shewerlu

    shewerlu的部落格

    shewerlu 發表在 痞客邦 留言(0) 人氣()