Excel VBA求助,当range中的任意一个值有变化时即启动宏​?

1.当range为[A1:U50]任意一值有变化即启动宏Macros1?最主要的是回答第一个问题,相对也简单些,如果可以还包括下列一些延伸的启发条件:2.如果这一区域为整... 1. 当range为[A1:U50]任意一值有变化即启动宏Macros1?
最主要的是回答第一个问题,相对也简单些,如果可以还包括下列一些延伸的启发条件:
2. 如果这一区域为整个sheet或者整个workbook?
3. 如果是打开XX1.xlsx即运行宏?
4. 更复杂的条件:有两个不同的文件,将XX1.xlsx中的sheet2与XX2.xlsx中的sheet3进行对比,如果两个sheet里[A1:U50]区域有任意一个值(可能是文本也可能是数值)不相等,则允许宏Macros1

问题4可能要用到条件判断语句比较复杂,但是问题1-3尽可能参照下面的双击启动宏的方法,即如果能用类似的命令就能实现最好了,如果不能也可以用判断语句
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Call Macros1
End Sub
问的问题很泛,非常感谢!
展开
 我来答
不想起名字了99
2014-08-07 · TA获得超过1695个赞
知道大有可为答主
回答量:2708
采纳率:76%
帮助的人:724万
展开全部
我建议你要调整一下你的程序逻辑
分析一下

判断任意单元格变动 一定是用到 change事件
也就是说即使在相关的表中输入一个字符都会引发程序的执行

你的四个条件通过编程是有可能实现的,但是代码量会较大,程序执行需要时间

可以设想,程序写完后,只要用一下表,就会执行半天,反应很慢,用户无法忍受。
更多追问追答
追问
谢谢,如果[A1:U50]区域套用了变量的确会这样,如果只是一个静态的数据库(仅少部分更改),不会出现你所说的问题
追答
你没有理解我说的
你是要在 事件中判断 具体是哪一部分在操作
和这一个区域变没有还没有关系,就是第一步你得先判断目前EXCEL中用户在操作的区域,就很跟费时间,第二步才是当用户操作区域你你的指定区域,再判断是什么数据变化了

还是不要这么做吧
姓王的wy451

推荐于2016-10-03 · TA获得超过48.3万个赞
知道大有可为答主
回答量:8万
采纳率:78%
帮助的人:8905万
展开全部
1、代码如下:
Private Sub Worksheet_Change(ByVal Target As Range)
If Application.Intersect([A1:U50], Target) Is Nothing Then Exit Sub
Call Macros1
End Sub
2、如果是整个工作表,上述代码取消条件那句即可。如果是整个工作簿,则为工作簿的事件,第一行为:Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
3、如果打开文件就运行宏,也是工作簿事件:Private Sub Workbook_Open()
4、要麻烦一些,将两个区域的数据存入数组中进行比较要快一些
更多追问追答
追问
大神的每一次回答都很经典。顺带套用了你之前的代码Sheet3.Range("A:A").Find(Ra.Value, , , 1).Resize(, 11).Copy Ra**复制1-11列,发现会无限执行至死机,原因是copy了A列造成A列改变。我尝试用VLOOKUP代替上述代码以避免A列被修改但不够智能,每一列都需要写一个函数。怎么实现只copy第2列-第11列,哪个参数是控制起始列的?谢谢
追答

你运行的宏如果对[A1:U50]区间单元格数据有更改,就会形成循环事件,所以在调用此类代码之前先要停止事件响应,结束时开启事件响应,这样就只执行一次代码。

Private Sub Worksheet_Change(ByVal Target As Range)
   If Application.Intersect([A1:U50], Target) Is Nothing Then Exit Sub
   Application.EnableEvents = False
   Call Macros1
   Application.EnableEvents = True
End Sub
来自:求助得到的回答
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式