[算表] 儲存格變動就執行會發生堆疊錯誤

作者: rafaiero (路人甲)   2020-01-22 13:41:41
軟體:excel
版本:2016
https://i.imgur.com/9vfTRsm.jpg
綠底字不用管,原本執行都沒問題
結果想把這段巨集套用每個工作表時
設在 thisworkbook
就悲劇了
而且還改不回原本正常執行的狀態
是有什麼問題嗎
這段如果是設在一般下執行是沒問題的
作者: soyoso (我是耀宗)   2020-01-22 14:00:00
因為每當selection寫入range("b2")的值的時候又會再次獨發該事件,也就進入無窮迴圈直到發生堆疊錯誤而出現錯誤訊息所以要有一個布林值、數字或文字來判斷是否是第一次進入該獨發事件並於寫入前調整上述的值,和寫入後調整回預設的值另外excel版本並無查到2017,請以正確的版本回文有誤字修改下下,不是"獨"發,是"觸"發
作者: rafaiero (路人甲)   2020-01-22 14:08:00
成功了,感謝
作者: soyoso (我是耀宗)   2020-01-22 14:24:00
如不設布林值、數字或文字的方式的話以巨集有判斷是否為0和range.clear來看也可以於最上方設個判斷,判斷是所觸發事件的儲存格是否為b2range.address、range.row和range.column、或intersect
作者: rafaiero (路人甲)   2020-01-23 09:36:00
我有個問題,那這樣要怎麼保護工作簿,因為我有5個以上的欄位變動,第一次解鎖後執行,那最後一次上鎖時,是不是要在end sub前放Application.EnableEvents = False然後上鎖,然後再Application.EnableEvents = True?這樣應該不會在上鎖時判斷儲存格變動,又再迴圈回去?
作者: soyoso (我是耀宗)   2020-01-23 09:38:00
什麼是工作簿?excel是工作表、活頁簿,沒有工作簿
作者: Iories (無法克制)   2020-01-23 09:41:00
Application.EnableEvent=False放在Private Sub..底下Applicatioin.EnableEvents=True放在End Sub 上其餘程式碼包在中間即可
作者: soyoso (我是耀宗)   2020-01-23 09:45:00
假設是保護工作表,測試保護或取消保護工作表,都無觸發內文workbook_sheetchange事件,所以是否要加,就要看實際原po的情況了
作者: rafaiero (路人甲)   2020-01-23 09:48:00
s大說的是,是保護活頁簿,版本是2016的感謝各位,回去試試看!因為有先試過,上鎖情形時,觸發後解鎖,於end sub前上鎖,跟每段end if後上鎖,都會發生資料寫不進去就錯誤,才問說是不是解鎖後要先停止觸發,直到結束程序時上鎖後再開啟觸發原本是觸發後解鎖,end sub前上鎖,會錯誤,然後再試每段觸發事件的儲存格變動程式後解鎖endif後上鎖,一樣發生錯誤
作者: soyoso (我是耀宗)   2020-01-23 09:59:00
什麼錯誤要說明,同內文所述的錯誤?或是其他錯誤訊息

Links booklink

Contact Us: admin [ a t ] ucptt.com