返回列表 上一主題 發帖

DDE資料抓取,逐格顯示問題

回復 10# FAlonso
Private Sub MyDee()
    Dim Sh As Worksheet, Rng As Range, 代號 As String
    Static Run_Time As Date            'Static 陳述式宣告的變數,在程式執行期間,會一直保留內容
  ' If Time > TimeValue("13:30") Then Exit Sub     ' 收盤時間後 停止執行
    Set Sh = Sheets("紀錄")
    代號 = Sheets("紀錄").[C1]
    Sh.Activate
    With Sheets("匯入").QueryTables(1)
        .Connection = "URL;http://tw.stock.yahoo.com/q/q?s=" & 代號
       .Refresh False
        If InStr(.ResultRange.Rows(3).Cells(1), 代號) = 0 Then GoTo Refresh_Err:
       Application.EnableEvents = False
        Set Rng = Sh.Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(1, .ResultRange.Columns.Count - 1)
        Rng.Value = .ResultRange.Rows(3).Value
        Application.EnableEvents = True
        Rng.Select
    End With
    Run_Time = Now + TimeValue("00:00:10")
    Application.OnTime Run_Time, "MyDee"  '設定 10秒後 執行 MyDee 程序
    Exit Sub
Refresh_Err:
    On Error Resume Next
    Application.OnTime Run_Time, "MyDee", , False  '清除先前設定的程序
    MsgBox "找不到 " & Sheets("紀錄").[C1] & " 股票"
End Sub

TOP

回復 11# GBKEE
多謝解答,但為什麼要做這樣的動作?
(1) 當instr(........,代號) = 0,程式會跳到最後refresh_err而不會做成重新呼叫mydee,現在卻要特意叫停?
(2) static一字,表面看其實用和不用也沒分別. 因為重覆運行, run_time的值是now+timevalue("00:00:10"),完全不需繼承run_time之前的數值; 不重覆運行,便會是application ontime 0:00:00,mydee,,false,也不用前面的值. 但是不用static,就是會出現問題.
我的理解究竟那裡發生問題?
80 字節以內
不支持自定義 Discuz! 代碼

TOP

1 在這網頁查詢股票的代號,InStr(.ResultRange.Rows(3).Cells(1), 代號), 為比對 匯入的資料是否包含股票的代號  當此函數為0 時表示沒有這個股票代號
2 不用static,就是會出現問題...
  不用static,可在模組最上方 Dim Run_Time As Date  設為 模組的私用變數.

TOP

我是一個業餘股票族,在網路上下載一些有關股票的Excel程式,總覺得不完全符合個人需求,所以有空我會修改或加強下載程式,供個人使用,但因怕觸犯智慧財產權,所以不敢送他人使用,也不敢在網路上公開.
Lin

TOP

        靜思自在 : 人生不一定球球是好球,但是有歷練的強打者,隨時都可以揮棒。
返回列表 上一主題