返回列表 上一主題 發帖

excel VBA calculate 的疑問

回復 2# GBKEE
昨天試了幾次
發現還是不行
我後來發現是我問的不好
我重新問我的問題好了


儲存格A1 會從外部接收資料 (DDE接收開盤價)
例如 台積電成交價
假設儲存格B1是昨日收盤價(DDE接收收盤價)
如果當天成交價大於收盤價
就會執行送單

但是我寫出來的程式
都要用人工去按執行
沒有辦法自動
我GOOGLE了一下
網路上都是教使用 calculate 和change這兩個指令
因為接收外部資料
所以只能使用calculate

但我試了一下
發現兩個問題
1. 我是利用C1=A1-B1
     if C1 >0 Then 執行
     然後回到sheet1, 發現C1>0的時候不會自己動
     一定要回到VB裡面按執行, 但按了執行, 就會一直送單送個不停, 有沒有辦法設定成C1變動1次, 只執行1次呢??

2.  我用了
     Application.EnableEvents = False
    雖然不會一直執行動作
    但是回到sheet1, 發現C1>0 的時候還是不會自己動作
    難道要用change這個指令嗎? (但C1是公式阿...)
    但是用了change
    會出現一個狀況
    就是每次按執行
    就會出現巨集的框框出來....
excel VBA 好難喔...

TOP

回復 1# shy
  1. Option Explicit
  2. Private Sub Worksheet_Calculate()  '工作表重算事件
  3.     '主動改A1(改為101)的值之後:  A1沒有=公式 不會啟動 [工作表重算事件]
  4.     '如A1=公式   公式的值有變動 會啟動 [工作表重算事件]
  5.     Application.EnableEvents = False
  6.     '程式碼.(修改到工作表公式參照到的儲存格)......  '當沒有 Application.EnableEvents = False'會一直送單送個不停
  7.     '程式碼.(修改到工作表公式參照到的儲存格)......
  8.     '程式碼.......
  9.     Application.EnableEvents = True
  10. End Sub
  11. Private Sub Worksheet_Change(ByVal Target As Range) '工作表內容有變動事件
  12.     '主動改A1(改為101)的值之後:  A1沒有=公式 會啟動 [工作表內容有變動事件]
  13.     Application.EnableEvents = False
  14.     '程式碼..(有修改到工作表的內容)....  '當沒有 Application.EnableEvents = False'會一直送單送個不停
  15.     '程式碼..(有修改到工作表的內容)....
  16.     '程式碼..(有修改到工作表的內容)....
  17.     Application.EnableEvents = True
  18. End Sub
複製代碼
  1. EnableEvents 屬性
  2. 請參閱套用至範例特定如果指定物件能觸發事件,則本屬性為 True。讀/寫 Boolean。
  3. 本範例會在儲存檔案之前停用事件,從而使 BeforeSave 事件不會發生。
  4. Application.EnableEvents = False
  5. ActiveWorkbook.Save
  6. Application.EnableEvents = True
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 一句溫暖的話,就像往別人身上灑香水,自己會沾到兩三滴。
返回列表 上一主題