[算表] 儲存格變動時執行具集

作者: xxyyzzxyz627 (MrWUYUAN)   2019-11-15 21:01:58
軟體:Excel
版本:2013
我本來使用Private Sub Worksheet_Change
A1儲存格有變動時
Call 具集
我用手動變動A1時會call 具集
但我用條件式的情況下就不會call了
我A1=if(b1=1,1,””) 但用這方法就不會call具集了
請問有什麼辦法用條件式的情況下會執行具集
作者: newacc (XD)   2019-11-15 21:41:00
想到的方式是把A1值先存到一個全域變數裡觸發Worksheet_Change後判斷A1.Value是否相同相同不做事,不同的話先更新全域變數再call巨集
作者: xxyyzzxyz627 (MrWUYUAN)   2019-11-15 21:48:00
謝謝newacc 我現在就是碰到a1儲存格變動時不會觸法具集
作者: soyoso (我是耀宗)   2019-11-15 21:50:00
是巨集,不是具集,另外觸"發"n大所回文,會於儲存格a1變動時觸發巨集因為worksheet_change時判斷a1和先前將a1寫入變數的值是否相同,不同就call 程序
作者: xxyyzzxyz627 (MrWUYUAN)   2019-11-15 21:58:00
Private Sub Worksheet_Change(ByVal Target As Range)If Target.Address = "$A$1" ThenCall LINE1End IfEnd Sub我現在的寫法是這樣可以請問如何修改嗎 謝謝
作者: soyoso (我是耀宗)   2019-11-15 21:59:00
先宣告個全域變數,在模組內判斷if 儲存格a1 <> 全域變數 then全域變數=儲存格a1call 程序end ifworkbook_open觸發時就,全域變數=儲存格a1的值
作者: xxyyzzxyz627 (MrWUYUAN)   2019-11-15 22:08:00
我現在卡住的地方 是我a1的儲存格是用公式 但公式的變動讓儲存格的值變動 無法觸法Worksheet _Change
作者: soyoso (我是耀宗)   2019-11-15 22:09:00
是的,這篇的回文就是在解決a1儲存格用公式且觸"發"再次提醒是觸"發"不是觸"法"如 https://i.imgur.com/wn3zsBJ.gifva1為公式(以內文公式),b1為1或非1時觸發(測試是以msgbox)但當a1已是空字串,而更改b1為非1的值時,因為a1會和全域變數來判斷都是空字串,所以就不觸發因此回文方面是符合a1公式的變動讓儲存格值變動而執行接下來call 程序的動作
作者: xxyyzzxyz627 (MrWUYUAN)   2019-11-15 22:26:00
抱歉我用一樣的方法還是不行可以請你看一下嗎 謝謝
作者: soyoso (我是耀宗)   2019-11-15 22:29:00
將巨集貼到回文或內文看看
作者: xxyyzzxyz627 (MrWUYUAN)   2019-11-15 22:31:00
https://reurl.cc/GkGrVv 謝謝上面是檔案的縮網址感謝你
作者: soyoso (我是耀宗)   2019-11-15 22:34:00
回文21:59~22:02的部分,原po都沒有做和target.address都沒有關係了
作者: xxyyzzxyz627 (MrWUYUAN)   2019-11-15 22:36:00
抱歉因為那個 我不懂 不好意思
作者: soyoso (我是耀宗)   2019-11-15 22:37:00
目的是該工作表任何一個儲存格變動觸發worksheet_change時就判斷先前a1寫入全域變數的值和觸發後a1的值是否有改變而非去判斷所觸發儲存格target位置字串range.address是否"a1"
作者: xxyyzzxyz627 (MrWUYUAN)   2019-11-15 22:41:00
可以請問這樣怎麼寫嗎? 我不太懂
作者: soyoso (我是耀宗)   2019-11-15 22:42:00
1.先在模組內宣告個全域變數。已存在模組或新增模組內都可
作者: xxyyzzxyz627 (MrWUYUAN)   2019-11-15 22:43:00
因為我工作表 會接DDE資料 並不會手動 去變動
作者: soyoso (我是耀宗)   2019-11-15 22:45:00
2.workbook_open內將該變數=a1,開啟時就將a1的值寫入3.22:00~22:01的動作if range("a1") <> 變數名稱 then變數名稱 = range("a1")call LINE1end if變數型態就依實際宣告
作者: xxyyzzxyz627 (MrWUYUAN)   2019-11-15 22:58:00
太感謝你了 用好了謝謝

Links booklink

Contact Us: admin [ a t ] ucptt.com