返回列表 上一主題 發帖

為什麼我的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

回復 1# color790


    Worksheet_Calculate是工作表重算事件
必須是工作表內有公式存在
當公式儲存格有重算動作才會觸發
學海無涯_不恥下問

TOP

剛有重試一下, 我用DDE, 數據確定會動, 但B欄卻都不會動
還是說要設定哪邊, 真奇怪
初學者color

TOP

本帖最後由 GBKEE 於 2011-11-11 18:36 編輯

回復 1# color790
Range("b1").End(xlDown).Offset(1) = Range("a1").Address
這語法基本上沒有錯誤的   但如果 B欄是完全沒有資料,或是直到最後一列才有資料
Range("b1").End(xlDown).Offset(1) ->會是工作表範圍之外 ,你的附檔就有錯誤的

例在 b1 以下任一列輸入 資料 就沒錯誤了

Range("b1").End(xlDown).Offset(1) = "=" & Range("a1").Address  
公式才會引發 Worksheet_Calculate 這事件

TOP

可以了.... 結果真的很奇怪
好像要在巨集設定裡, 點選 "啟用所有巨集(......) "
以前都點選 "除了經數位簽章的巨集外,停用所有巨集" , 開檔案按啟用巨集就可使用巨集
這個居然不行.....
不過總算可用了, 晚一點再來試試GBKEE的程式
謝謝大家的幫忙, 如果有問題,再麻煩各位幫忙解答...... ^^
初學者color

TOP

HI~GBKEE版主
剛用你寫的程式, 又不會動了
可否麻煩你幫我看一下(我有修改時間及一點點其他的)
活頁簿2.rar (16.12 KB)
初學者color

TOP

本帖最後由 GBKEE 於 2011-11-11 21:00 編輯

回復 6# color790
有反應的
startTime = Range("b1") '開盤時間, 例如: "09:00:00 AM"
stopTime = Range("d1")  '收盤時間, 例如: "01:30:00 PM"
你測試時間需在startTime - stopTime 時間內 ,可調整 B1,D1
如圖設立中斷點  , 工作表中選擇有公式的儲存格  先按 F2  再按 Enter 便可見動作了
之後在VBA 視窗 按 F8 逐步執行


TOP

版主,我不太懂
我D1現在是設 10:00:00 PM ,  B1是09:00:00 AM
由於是抓外國的DDE所以目前都會動, 也設立中斷點, 也按 F2  再按 Enter
但在VBA視窗按F8都是到尚未開盤下一行就又迴圈了, 這是為什麼?
初學者color

TOP

回復 8# color790
慚愧 是我那一篇寫錯了 ,已更正了.
  1. Private Sub Worksheet_Calculate()
  2.     Dim startTime, stopTime
  3.     Dim Tr As String, Time_Step As Date
  4.     Time_Step = #12:05:00 AM#     '設定間隔時間: 5分鐘->300秒
  5.     'Time_Step = #12:00:01 AM#     '設定間隔時間: 1秒
  6.     startTime = Range("b1") '開盤時間, 例如: "09:00:00 AM"
  7.     stopTime = Range("d1")  '收盤時間, 例如: "01:30:00 PM"
  8.     If startTime > Time Then  '<- 修改這裡  尚未開盤      
  9.         Exit Sub
  10.     ElseIf stopTime < Time Then '<- 修改這裡   已經收盤
  11.         Exit Sub
  12.     Else
  13.         If [C2] <> "-" And [C2] <> "###" Then   '清盤的狀態, 不取其資料
  14.             'Tr = Int((nowTime - startTime) * 1440) + 30  '每差 300 秒就換一列
  15.             Tr = Int((Time - startTime) / Time_Step) + 30 ' 每5分鐘一列 從第30列開始
  16.             If Range("D" & Tr) = "" Then Range("D" & Tr) = Range("C2")  '開始價
  17.             If Range("E" & Tr) = "" Or Range("C2") > Range("E" & Tr) _
  18.                 Then Range("E" & Tr) = Range("C2")                      '最高價
  19.             If Range("F" & Tr) = "" Or Range("C2") < Range("F" & Tr) _
  20.                 Then Range("F" & Tr) = Range("C2")                      '最低價
  21.             Range("G" & Tr) = Range("C2")                               '結束價
  22.         End If
  23.     End If
  24. End Sub
複製代碼

TOP

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

TOP

        靜思自在 : 天上最美是星星,人生最美是溫情。
返回列表 上一主題