Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 5825|回复: 11

[已解决]如何触发VBA程序

[复制链接]
发表于 2010-1-27 12:30 | 显示全部楼层 |阅读模式
一个工作簿里的任何工作表的任何单元格数值改变都能触发某个VBA程序,这样的程序要怎么写,谢谢
最佳答案
2010-1-27 12:31

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

End Sub

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2010-1-27 12:31 | 显示全部楼层    本楼为最佳答案   

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

End Sub

回复

使用道具 举报

发表于 2010-1-27 12:32 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2010-1-27 12:41 | 显示全部楼层

能否写详细一点,假设我要触发一个叫“汇总”的宏

回复

使用道具 举报

发表于 2010-1-27 12:44 | 显示全部楼层

call 汇总

回复

使用道具 举报

 楼主| 发表于 2010-1-27 13:14 | 显示全部楼层

大概明白了,谢谢

不过现在的情况是因为我的宏程序也对数值进行了操作,导致宏一直在循环运行。现在这个工作簿里有3个工作表,如果我要限制条件,只有第2个和第3个表格的数值改变时才触发这个宏,那要怎么写

回复

使用道具 举报

 楼主| 发表于 2010-1-27 13:19 | 显示全部楼层

好像这样可以,我的第一个表叫“汇总表”

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name <> "汇总表" Then
Call 汇总
End If
End Sub

回复

使用道具 举报

发表于 2010-1-27 14:28 | 显示全部楼层

请看以下示例,复制在工作表程序中,然后运行一遍。再将两行application开头的,前面的 ' 去掉,体会这两句代码的作用-屏蔽触发事件和打开触发事件。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 And Target.Address = "$A$1" Then
 'Application.EnableEvents = False
 Range("A1") = Range("A1") + 1
 'Application.EnableEvents = True
End If
End Sub

回复

使用道具 举报

发表于 2010-1-27 14:32 | 显示全部楼层

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

End Sub

任何一个工作表变化都触发,应该用这个事件。

回复

使用道具 举报

发表于 2010-1-27 22:16 | 显示全部楼层

QUOTE:
以下是引用wayy在2010-1-27 14:32:00的发言:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

End Sub

任何一个工作表变化都触发,应该用这个事件。

真是,没注意到任何这两个字

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-17 05:41 , Processed in 0.269719 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表