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