vba change的触发
- 教育综合
- 2024-04-15 07:57:22
VBA中关于change事件和Application.EnableEvents的问题
试解释如下:
Application.EnableEvents的作用是控制事件的触发。
当Application.EnableEvents设置为 False时,禁止触发事件。
当Application.EnableEvents设置为 True 时,可以正常触发事件,excel默认状态。
两者状态下的区别,以 Target.Value = Target.Value + 1为例:
PrivateSubWorksheet_Change(ByValTargetAsRange)
Application.EnableEvents=False'禁止触发事件
Target.Value=Target.Value+1'在禁止触发事件状态下,对单元格的赋值不会导致Worksheet_Change事件的触发
Application.EnableEvents=True
EndSub
因此,上面的代码中,其实际效果是每次操作后,单元格单次加1。
PrivateSubWorksheet_Change(ByValTargetAsRange)
'Application.EnableEvents=False'默认情况下,会自动触发事件
Target.Value=Target.Value+1'在触发事件状态下,对单元格的赋值都会导致Worksheet_Change事件的触发
'Application.EnableEvents=True
EndSub
因此,上面的代码会持续的触发Worksheet_Change事件,直到不再触发为止,其效果是每次操作后,单元格单次跳变(其实是经过多次加1后的结果)。
至于为什么没有限入死循环,可能是系统的限制(电脑的性能、软件的防止机制等)。经本地电脑实际测试, excel2010版本,每次累加87,与你问题描述中的47并不相同,可见是随机的。
vba change事件没能触发
事件的触发条件是change,与事件里面的语句没有关系 比如Worksheet_change事件,只要当前工作表有变化,无论是哪个单元格,都会触发VBA 为什么有时候不触发change事件??
onchange要控件失去焦点的时候才触发,如果你需要随时触发,可以考虑使用onkeypress等事件在EXCEL VBA中当单元格字体颜色改变时,自动触发一个事件。这个事件,如何(自定义)实现?
在 Excel VBA 中,您可以使用 Worksheet_SelectionChange 事件来监测单元格字体颜色的改变。 以下是示例代码: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim selCell As Range For Each selCell In Target If selCell.Font.ColorIndex <> xlAutomatic Then '此处是您自定义的代码 MsgBox "字体颜色已更改!" End If Next selCell End Sub 将以上代码粘贴到您的工作簿的EXCEL:VBA:为什么自动生成的值无法触发Change()事件,而手动输入的值却可以触发Change()事件?
你自动生成的时候,肯定用到了Excel的“重算”功能,也就是工作表事件响应里的Calculate,所以你只要用这个就行了,而不要用Change!! 当然,这时候,就是相对于全工作表而言的,也就不会有Target这个变量,所以原来的代码就不能用了。 所以你还要再找找规律,到底是根据什么自动生成的呢? 如果只是引用单元格,那么,可以判断源单元格改变作为事件,如果是用RAND等函数生成的,那估计方法有限!展开全文阅读
下一篇
返回列表