返回列表 上一主題 發帖

為什麼我的Excel 不會動 ??

為什麼我的Excel 不會動 ??

本帖最後由 color790 於 2011-11-11 17:29 編輯

問一個很粗淺的問題.....(不過我快被搞瘋了)

主要是想用版主GBKEE 這一段程式 http://forum.twbts.com/thread-4188-1-1.html
只是都無法動,所以找了以下最簡單的程式來試試結果也不行,
Private Sub Worksheet_Calculate()
Range("b1").End(xlDown).Offset(1) = Range("a1")
End Sub
意思應該是[A1]如果變動,在B欄會記錄下來, 可是為什麼我的Excel 不會動 ??
程式寫在工作表1也不會動, ThisWorkbook也不會動
活頁簿2.rar (10.9 KB)
初學者color

謝謝版主的幫忙
初學者color

TOP

回復 16# color790
你的DEE 資料為錯誤值 #REF!
  1. Private Sub Worksheet_Calculate()
  2.     Application.EnableEvents = False
  3.     If IsError([G8]) = 0 And IsError([i8]) = 0 Then
  4.         If S <> [G8] & [i8] And [G8] & [i8] <> "" Then
  5.             Cells(Rows.Count, "k").End(xlUp).Offset(1).Resize(1, 3) = Array(Time, [G8], [i8])
  6.             S = [G8] & [i8]
  7.         End If
  8.     End If
  9.     Application.EnableEvents = True
  10. End Sub
複製代碼

TOP

HI~版主, 再麻煩你一下~
第一個程式在剛打開程式時, 下面這一行會有錯誤產生
If S <> [G8] & [i8] And [G8] & [i8] <> "" Then
不過在偵錯後停止再按執行就OK了,再麻煩你一下, 謝謝版主~
初學者color

TOP

天啊.....太感謝你了,版主
回家再來試一下, 感恩:'(
初學者color

TOP

回復 13# color790
  1. '工作表1的程式
  2. Dim S As String   '工作表1的 私用變數
  3. Private Sub Worksheet_Calculate()
  4.     Application.EnableEvents = False
  5.     If S <> [G8] & [i8] And [G8] & [i8] <> "" Then
  6.         Cells(Rows.Count, "k").End(xlUp).Offset(1).Resize(1, 3) = Array(Time, [G8], [i8])
  7.         S = [G8] & [i8]
  8.     End If
  9.     Application.EnableEvents = True
  10. End Sub
複製代碼
  1. 'Module1的程序
  2. Sub AUTO_OPEN()
  3.     巨集1
  4. End Sub
  5. Private Sub 巨集1()
  6.     Dim 開盤時間 As String, 收盤時間  As String, DEE時間, Deehh As String, Deemm As String
  7.     Dim Time_Step As Date
  8.     開盤時間 = "B5"
  9.     收盤時間 = "D5"
  10.     DEE時間 = "C2"
  11.     Dim TESTTr  '此變數是測試給你看的
  12.     With 工作表1
  13.         If .Range(開盤時間) > Time Then  ' 尚未開盤   '等候開盤時間到執行
  14.             Application.OnTime .Range("開盤時間"), "巨集1"
  15.         ElseIf .Range(收盤時間) < Time Then ' 已經收盤   '關閉巨集
  16.             Exit Sub
  17.         End If
  18.         Time_Step = #12:05:00 AM#      '設定間隔時間: 5分鐘
  19.         'Time_Step = #12:01:00 AM#     '設定間隔時間: 1分鐘
  20.          ' 1 = 1分鐘 ; 一天的總分鐘數 24 * 60 =1440
  21.           '1分鐘    #12:01:00 AM# * 1400
  22.          'Time_Step* 1400 = 設定間隔 ? 分鐘
  23.          
  24.          '**有錯誤 Tr = Int((Time - .Range(開盤時間) ) * 1440) + 30  '每差 300 秒就換一列***
  25.          '上式應為傳回->  間隔的總分鐘數 + 30
  26.            Tr = Int(Int((Time - .Range(開盤時間)) * 1440) / 5) '每差 300 秒 此變數是測試給你看的
  27.            TESTTr = Int((Time - .Range(開盤時間)) / Time_Step)  '此變數是測試給你看的
  28.            MsgBox TESTTr = Tr                                  '此變數是測試給你看的
  29.         If .[D2] <> "-" And .[D2] <> "###" Then   '清盤的狀態, 不取其資料
  30.             Tr = Int((Time - .Range(開盤時間)) / Time_Step) + 30
  31.             ' Time_Step 分鐘一列    ->  從第30列開始 **
  32.             Range("K" & Tr) = Time                '加上時間
  33.             If Range("L" & Tr) = "" Then Range("L" & Tr) = Range("D2")  '開始價
  34.             If Range("M" & Tr) = "" Or Range("D2") > Range("M" & Tr) _
  35.                 Then Range("M" & Tr) = Range("D2")                      '最高價
  36.             If Range("N" & Tr) = "" Or Range("D2") < Range("N" & Tr) _
  37.                 Then Range("N" & Tr) = Range("D2")                      '最低價
  38.             Range("O" & Tr) = Range("D2")                               '結束價
  39.         End If
  40.         Deehh = Mid(.Range(DEE時間), 1, 2)
  41.         Deemm = Mid(.Range(DEE時間), 3, 2)
  42.         Deemm = (Int(Deemm / (Time_Step * 1440)) + 1) * (Time_Step * 1440)
  43.         If Val(Deemm)>=60 Then
  44.             Deehh = Deehh + 1
  45.             Deemm = "00"
  46.         End If
  47.         Application.OnTime TimeSerial(Deehh, Deemm, 0) + Time_Step, "巨集1"
  48.     End With
  49. End Sub
複製代碼

TOP

DDE-1.rar (16.98 KB)
hi~版主, 不好意思, 有2個想法想請你幫忙
1. 時間是想以dde上的時間為主,每5分鐘(或1分鐘) 記錄價格,時間,最高價,最低價,開始價,結束價及累積[G8] & [I8]的量

2. 另一個想法是想[G8] & [I8]發生變化, 才記錄時間,價格
初學者color

TOP

本帖最後由 GBKEE 於 2011-11-15 08:20 編輯

回復 11# color790
請附上檔案範例 看看

TOP

HI~版主
已經可以用了, 謝謝幫忙~
另外再請問一下(雖然原來的做法也可以)
1.如果使用DDE上的時間, 要怎麼做到每幾分鐘抓一次資料(因為有時候會跟電腦的時間不太一樣)
DDE時間格式是類似像134459 --->13:44:59
2.DDE一直在跳動,可以用使累積量記錄嗎?比如記錄累積一分鐘的買賣量
3.Private Sub Worksheet_Calculate() 有辦法在其中一兩個儲存格發生變動才觸發vb嗎?
初學者color

TOP

版主不要這麼說, 你肯幫忙已經很好了....
由於現在是假日沒有DDE來源可用, 禮拜一再來完整的使用看看,
如果用版主的方法(設中斷點,按F8測試), 會在這一行停止
  Tr = Int((Time - startTime) / Time_Step) + 30
換成另一行OK
Tr = Int((Time - startTime) * 1440) +30
初學者color

TOP

        靜思自在 : 受人點水之恩,須當湧泉以報。
返回列表 上一主題