返回列表 上一主題 發帖

如何更改其他股號,要哪些步驟?

本帖最後由 GBKEE 於 2012-4-27 21:09 編輯

回復 10# cfuxiong
試試看
  1. Option Explicit             '在模組層次中強迫每個在模組�堛瘍僂くㄔ眸楨�確的宣告。
  2. Dim Rng As Range
  3. Private Sub AUTO_OPEN()     '此巨集於檔案開啟時會自動執行
  4.     Sheets("紀錄").UsedRange.Offset(2).Clear                '清除 前一日的數據
  5. '***   Offset(1).Clear  改成   Offset(2).Clear    '********
  6.     If Time < TimeValue("08:45") Then             '早於開盤時間
  7.         Application.OnTime TimeValue("08:45"), "MyDee"    '設定於08:45 執行 MyDee 程序
  8.     ElseIf Time >= TimeValue("08:45") And Time <= TimeValue("13:30") Then '於交易時間內
  9.         MyDee                                     ' 執行 MyDee 程序
  10.     End If
  11. End Sub
  12. Private Sub MyDee()
  13.     Dim Sh As Worksheet, 代號 As String
  14.     If Time > TimeValue("13:30") Then Exit Sub     ' 收盤時間後 停止執行
  15.    On Error Resume Next
  16.    Set Sh = Sheets("紀錄")
  17.     With Sh
  18.         代號 = .[C1]
  19.         .[C1].Select
  20.         .Activate
  21.         Application.ScreenUpdating = False
  22.         With Rng
  23.             .Interior.ColorIndex = xlNone
  24.             .Borders.LineStyle = xlLineStyleNone
  25.         End With
  26.         If Err <> 0 Then
  27.             Err.Clear
  28.             On Error GoTo 0
  29.             .UsedRange.Interior.ColorIndex = xlNone
  30.             .UsedRange.Borders.LineStyle = xlLineStyleNone
  31.         End If
  32.     End With
  33.     With Sheets("匯入").QueryTables(1)
  34.         .Connection = "URL;http://tw.stock.yahoo.com/q/q?s=" & 代號
  35.        .Refresh False
  36.         Application.EnableEvents = False
  37.         Set Rng = Sh.Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(1, .ResultRange.Columns.Count - 1)
  38.         Rng.Value = .ResultRange.Rows(3).Value
  39.         With Rng
  40.             If .Row >= 20 Then
  41.                 ActiveWindow.ScrollRow = .Row - 17
  42.             Else
  43.               ActiveWindow.ScrollRow = 3
  44.             End If
  45.             .Interior.ColorIndex = 4
  46.             .BorderAround xlContinuous, 2, 5
  47.         End With
  48.         Application.EnableEvents = True
  49.         Application.ScreenUpdating = True
  50.     End With
  51.      Application.OnTime Now + TimeValue("00:00:10"), "MyDee" '設定 10秒後 執行 MyDee 程序
  52.    
  53.    '10秒鐘: 輸入此格式  #00:00:10# 後VBA 自動生成   ->  #12:00:10 AM#
  54.    '5分鐘:  輸入此格式  #00:05:00# 後VBA 自動生成   ->  #12:05:00 AM#
  55.    '1小時:  輸入此格式  #1:00:00#  後VBA 自動生成   ->  #1:00:00 AM#
  56.    
  57.     'Application.OnTime Now + #12:00:10 AM#, "MyDee" '設定 10秒後  執行 MyDee 程序
  58.     'Application.OnTime Now + #12:05:00 AM#, "MyDee" '設定 5分鐘後 執行 MyDee 程序
  59.     'Application.OnTime Now + #1:00:00 AM#, "MyDee"  '設定 1小時後 執行 MyDee 程序
  60.    
  61.     Exit Sub
  62. End Sub
複製代碼

TOP

回復 8# Hsieh
謝謝Hsieh版大細心指導;已OK了…謝謝~~
50 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 6# c_c_lai
謝謝c_c_lai的指導與幫忙,非常滿意…再說聲謝謝~~
50 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 7# cfuxiong


   並非更改查詢
因為你的條件已經在程式碼中使用紀錄工作表C1的值作條件
所以只要將紀錄工作表C1的值改成想要的代碼即可
學海無涯_不恥下問

TOP

回復 5# Hsieh
謝謝Hsieh版大指導;
《你把紀錄工作表事件程序刪除後執行看看,應該就會消除這種現象》我作了以下動作;
1.打開檔案→[停用巨集]進入→在[匯入]欄,操作[資料]→[匯入外部資料]→[編輯查詢]→把[2303聯電]改成[2330台積電]=>畫面看來是OK→儲存→離開。
2.再打開檔案→[啟用巨集]進入→又還原啟始資料。
請版大高手指導…謝謝~~
50 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 3# cfuxiong
' Sh.Activate                       ' *************
' Rng.Select                        ' *************
這兩處我將它改成註釋,因為它會將畫面不斷切到 "紀錄" 工作表單,
如果你是正在檢查 "匯入"工作表單時,設定時段一到畫面
便會被強制切到 "紀錄" 工作表單上,非常困擾!

' Application.OnTime Now + TimeValue("00:00:10"), "MyDee"  修改成
Application.OnTime (Now + Sheets("匯入").Range("P2").Value), "MyDee"
因為你的程式碼並不是放置在 ThisWorkBook 區塊內,所以 "ThisWorkBook.MyDee"
改成 "MyDee"。

股票紀錄.rar (12.55 KB)

TOP

回復 3# cfuxiong

會發現更改股號後又出現先前的股票資訊,有可能是時間差的關係,當前一個查詢尚未查詢結束(正在查詢中)
你更改了C1的股號這時觸發事件程序而執行更新,結果此次更新比前一次更新速度快,就貼到資料區,結果前一次更新接著完成
所以造成這樣現象,這與網路有關,你把紀錄工作表事件程序刪除後執行看看,應該就會消除這種現象
另提到5分鐘執行是改成Now + TimeValue("00:05:00")沒錯
  Application.OnTime Now + TimeValue("00:05:00"), "MyDee"  '設定 5分鐘後 執行 MyDee 程序
學海無涯_不恥下問

TOP

本帖最後由 c_c_lai 於 2012-4-27 11:22 編輯

回復 3# cfuxiong
請你先檢查一下
代號 = Sheets("紀錄").[C1]

等盤後我再看看,剛才一執行你的程式,就出現 400 的錯誤訊息,
結果連帶的我的作業程式竟然自動停止了我的DDE資料匯入!

TOP

回復 2# c_c_lai
謝謝c_c_lai的指導與幫忙,到目前為止,用《Application.OnTime Now + TimeValue("00:05:00"), "MyDee"  '設定 5分後 執行 MyDee 程序》是OK
也試過你指導的方法,但卻出現”階段錯誤13”不知何處出錯?
現在是想要更改[股號]卻不知如何下手;
我在[匯入]欄,操作[資料]→[匯入外部資料]→[編輯查詢]→把[2303聯電]改成[2330台積電]→[記錄]欄卻不能更新成[2330台積電]Data,5分鐘後又還原[2303聯電]請問如何處置?更改其他股號,要哪些步驟?謝謝~~
50 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 1# cfuxiong
那你為何不這麼做: 假設在你的 "匯入" 工作表單內的 P1 欄位輸入 -> "時段設定",  P2 欄位輸入 -> "00:05:00",而將
Application.OnTime Now + TimeValue("00:00:10"), "MyDee" 修改成
Application.OnTime (Now + Sheets("匯入").Range("P2").Value), "ThisWorkBook.MyDee",如此,以後只要你不高興就到
P2 欄位來修改你高興的設定時段,那不就結了!

TOP

        靜思自在 : 時時好心就是時時好日。
返回列表 上一主題