返回列表 上一主題 發帖

[期指即時趨勢]請版大Excel高手們賜教;

本帖最後由 GBKEE 於 2012-4-13 06:26 編輯

回復 4# cfuxiong
期指即時.rar (17.22 KB)

你附檔 Sheet1  '趨勢研判 A欄的時間請改成  08:40:00 AM 的內容   
不要是 日期+時間 的內容 以配合程式的執行.
請將程式碼複製於 ThisWorkbook 模組裡
  1. Option Explicit
  2. Private Sub Workbook_Open()         '活頁簿開啟時 自動執行的預設程序
  3.     With Sheet1.Range("a9:a" & Sheet1.[a9].End(xlDown).Row)
  4.         .Parent.Activate
  5.         .Offset(, 1).Resize(, 3).Clear
  6.         .Interior.ColorIndex = xlNone
  7.     End With
  8.     Dee
  9. End Sub
  10. Private Sub Workbook_BeforeClose(Cancel As Boolean)    '活頁簿關閉時 自動執行的預設程序
  11.      With Sheet1.QueryTables(1)       '第一個 外部資料
  12.         .RefreshOnFileOpen = False    '外部資料 於活頁簿開啟時自動匯入 設定為False
  13.                                       '可停止 活頁簿開啟時詢問  外部資料是否更新
  14.         .RefreshPeriod = 0            '外部資料 自動e更新時間的間格 為0
  15.     End With
  16.     Save                              '存檔
  17. End Sub
  18. Private Sub Dee()
  19.     Dim xf As Range, Rng As Range, xlQuery As QueryTable
  20.      With Sheet1  '趨勢研判
  21.         Set Rng = .Range("a9:a" & .[a9].End(xlDown).Row)    '於A欄的時間範圍內
  22.         If Time < Rng(1) Then                               '時間 小於 [A9]的時間
  23.             Application.OnTime Rng(1), "ThisWorkbook.Dee"   '設定A9]的時間  執行 DEE 程序
  24.         ElseIf Time > Rng(Rng.Rows.Count) Then              '時間 大於 A欄最後一列的時間
  25.             Exit Sub
  26.         Else
  27.             Sheet1.QueryTables(1).Refresh False                 '外部資料 更新
  28.             With Rng.Find(TimeSerial(Hour(Time), Minute(Time), 0), LookIn:=xlFormulas)     '尋找到A欄的時間
  29.                 .Parent.Activate
  30.                 .Cells.Select
  31.                 .Cells(1, 2).Resize(, 3) = Application.Transpose(.Parent.[D3:D5].Value)    '找到A欄的時間: 右三欄的的值
  32.                 .Resize(, 4).Interior.ColorIndex = 34                                      '找到A欄的時間四欄的圖樣
  33.                 .Cells(0).Resize(, 4).Interior.ColorIndex = xlNone                         '取消: 找到A欄的時間上一列的四欄圖樣
  34.                 If .Cells(2) <> "" Then
  35.                     Application.OnTime .Cells(2), "ThisWorkbook.Dee"                    '設定於下一分鐘時間 執行 DEE 程序
  36.                 Else
  37.                     MsgBox "已過 收盤 時間 " & Rng(Rng.Rows.Count).Text
  38.                 End If
  39.             End With
  40.         End If
  41.     End With   
  42. End Sub
複製代碼

TOP

回復 7# cfuxiong
Private Sub Dee()  修改 這裡
  1.   If Time < Rng(1) Then                               '時間 小於 [A9]的時間
  2.             'Application.OnTime Rng(1), "ThisWorkbook.Dee"   
  3.              '這裡我加上註解 程式不會執行 請取消如下式
  4.             Application.OnTime Rng(1), "ThisWorkbook.Dee"   '設定A9]的時間  執行 DEE 程序
  5.         ElseIf Time > Rng(Rng.Rows.Count) Then              '時間 大於 A欄最後一列的時間
  6.            ' Exit Sub         
  7.             '這裡我加上註解 程式不會執行 請取消如下式
  8.             Exit Sub
  9.         End If
複製代碼

TOP

本帖最後由 GBKEE 於 2012-4-13 09:06 編輯

回復 10# cfuxiong
你確實是個VBA新手   
圖片中有看到 複製代碼  程式信息指的是它吧
5#的檔案已更新 你重新下載吧

TOP

        靜思自在 : 脾氣嘴巴不好,心地再好也不能算是好人。
返回列表 上一主題