- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
9#
發表於 2014-4-26 12:43
| 只看該作者
本帖最後由 GBKEE 於 2014-4-27 10:38 編輯
回復 8# flyflyduck1
一般的接收DEE的資料 時間,開盤價,最高價,最低價,收盤價,成交量,成交筆數
在固定的儲存格接收數值,使用者在1分鐘,或 5分鐘將資料導入指定的位置
可參考下面Sheet1模組程式 執行Ex()試試看- Option Explicit '接收DEE的資料可使用 Worksheet_Calculate
- Private Sub Worksheet_Calculate()
- Static DataLoad_Time As Single 'Static 關鍵字儲存變數
- Static Ar()
- 'Static 陳述式 在程序層次中用來宣告變數並配置儲存空間。
- '以 Static 陳述式宣告的變數,在程式執行期間,會一直保留內容
- '這工作表: 假設Dee公式在[B2:I2],且他儲存格無公式存在
- '意味任一個 Dee公式有變動會啟動這Calculate事件
- If DataLoad_Time <> 0 And [b2] - DataLoad_Time > #12:00:59 AM# Then '在下一分鐘出現後
- Range("B" & Rows.Count).End(xlUp).Offset(1).Resize(1, 8) = Ar '導入上一分鐘的資料
- '可接下作你要的工作
- '可接下作你要的工作
- End If
- Ar = [B2:I2].Value '紀錄資料
- DataLoad_Time = [b2] '紀錄時間
- End Sub
- Sub Ex() '這程序模擬Dee公式在Sheet2上的儲存格,進而觸發Worksheet_Calculate事件
- Dim h, L
- h = 50
- L = 40
- With Sheet2.[B2:I2]
- .Cells(1) = Time '只有資料變動,才會觸發Worksheet_Calculate事件
- .Cells(2) = Int((h - L + 1) * Rnd + L) '50 - 40的亂數
- .Cells(3) = Int((h - L + 1) * Rnd + L)
- .Cells(4) = Int((h - L + 1) * Rnd + L)
- .Cells(5) = Int((h - L + 1) * Rnd + L)
- .Cells(6) = Int((h - L + 1) * Rnd + L)
- .Cells(7) = Int((h - L + 1) * Rnd + L)
- .Cells(8) = Int((h - L + 1) * Rnd + L) '如變動8次就觸發8次的Worksheet_Calculate事件
- End With
- Application.OnTime Time + #12:01:00 AM#, "Sheet1.ex"
- Debug.Print Time
- End Sub
複製代碼
|
|