※ 本文轉寄自 ptt.cc, 文章原始頁面
看板Office
標題

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

時間
最新2021-01-23 09:59:00
留言36則留言,3人參與討論
推噓0 ( 0036 )
軟體:excel 版本:2016 https://i.imgur.com/9vfTRsm.jpg
[算表] 儲存格變動就執行會發生堆疊錯誤
綠底字不用管,原本執行都沒問題 結果想把這段巨集套用每個工作表時 設在 thisworkbook 就悲劇了 而且還改不回原本正常執行的狀態 是有什麼問題嗎 這段如果是設在一般下執行是沒問題的 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.82.245 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1579671703.A.9DC.html

36 則留言

soyoso, 1F
因為每當selection寫入range("b2")的值的時候

soyoso, 2F
又會再次獨發該事件,也就進入無窮迴圈直到發生堆疊錯誤而

soyoso, 3F
出現錯誤訊息

soyoso, 4F
所以要有一個布林值、數字或文字來判斷是否是第一次進入該

soyoso, 5F
獨發事件

soyoso, 6F
並於寫入前調整上述的值,和寫入後調整回預設的值

soyoso, 7F
另外excel版本並無查到2017,請以正確的版本

soyoso, 8F
回文有誤字修改下下,不是"獨"發,是"觸"發

rafaiero, 9F
成功了,感謝

soyoso, 10F
如不設布林值、數字或文字的方式的話

soyoso, 11F
以巨集有判斷是否為0和range.clear來看

soyoso, 12F
也可以於最上方設個判斷,判斷是所觸發事件的儲存格是否為

soyoso, 13F
b2

soyoso, 14F
range.address、range.row和range.column、或intersect

rafaiero, 15F
我有個問題,那這樣要怎麼保護工作簿,因為我有5個以上

rafaiero, 16F
的欄位變動,第一次解鎖後執行,那最後一次上鎖時,是

rafaiero, 17F
不是要在end sub前放Application.EnableEvents = False

rafaiero, 18F
然後上鎖,然後再Application.EnableEvents = True?

rafaiero, 19F
這樣應該不會在上鎖時判斷儲存格變動,又再迴圈回去?

soyoso, 20F
什麼是工作簿?excel是工作表、活頁簿,沒有工作簿

Iories, 21F
Application.EnableEvent=False放在Private Sub..底下

Iories, 22F
Applicatioin.EnableEvents=True放在End Sub 上

Iories, 23F
其餘程式碼包在中間即可

soyoso, 24F
假設是保護工作表,測試保護或取消保護工作表,都無觸發

soyoso, 25F
內文workbook_sheetchange事件,所以是否要加,就要看實際

soyoso, 26F
原po的情況了

rafaiero, 27F
s大說的是,是保護活頁簿,版本是2016的

rafaiero, 28F
感謝各位,回去試試看!
※ 編輯: rafaiero (223.137.172.138 臺灣), 01/23/2020 09:49:48

rafaiero, 29F
因為有先試過,上鎖情形時,觸發後解鎖,於end sub前上

rafaiero, 30F
鎖,跟每段end if後上鎖,都會發生資料寫不進去就錯誤,

rafaiero, 31F
才問說是不是解鎖後要先停止觸發,直到結束程序時上鎖

rafaiero, 32F
後再開啟觸發

rafaiero, 33F
原本是觸發後解鎖,end sub前上鎖,會錯誤,然後再試每

rafaiero, 34F
段觸發事件的儲存格變動程式後解鎖endif後上鎖,一樣發

rafaiero, 35F
生錯誤

soyoso, 36F
什麼錯誤要說明,同內文所述的錯誤?或是其他錯誤訊息