[算表] 储存格变动就执行会发生堆叠错误

楼主: 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