EXCEL VBA Calculate事件的触发方法
我有个很多公式的表格,需要对固定一个区域的数据进行监测,如果数据变化(不是修改的,是自动计算的),就把变化的数据写到一个新的区域保存,如何实现?我使用Calculate事...
我有个很多公式的表格,需要对固定一个区域的数据进行监测,如果数据变化(不是修改的,是自动计算的),就把变化的数据写到一个新的区域保存,如何实现?我使用Calculate事件,有两个问题:
1\是如何定位到这个区域,其他区域的数据出现计算后,不触发Calculate事件或利用条件不进入主程序,防止出现假死现象?
2\是如何跟踪当前数据的变化的单元格,并得到当前单元格的行列值?
如果是文本信息怎么办? 展开
1\是如何定位到这个区域,其他区域的数据出现计算后,不触发Calculate事件或利用条件不进入主程序,防止出现假死现象?
2\是如何跟踪当前数据的变化的单元格,并得到当前单元格的行列值?
如果是文本信息怎么办? 展开
1个回答
展开全部
这个想法是可以实现的,思路如下:
首先对固定的单元格区域命名,例如命名为:testarea
然后在某个角落不会使用到的单元格中(例如a65536)程序将会填入公式“=SUM(testarea)”,并与之前的求和值(存放在单元格a65535中)做比较,如果不同,表明区域的数值有变化。
然后在Calculate事件中作如下判断:
Private Sub Worksheet_Calculate()
Range("a65536").FormulaR1C1 = "=SUM(testarea)"
If Range("a65536").Value <> Range("a65535").Value Then
If Range("a65535").Value = "" Then '第一次判断
Range("a65535").Value = Range("a65536").Value
Else
'... ...固定的单元格区域数值有变化,再判断哪个单元格与之前的数值不同
End If
Else
'... ...固定的单元格区域数值没有变化,不用处理
End If
End Sub
查找具体哪些单元格数值有变化,需要将原固定的单元格区域中的数值复制到另一片区域,然后逐个单元格做比较,这里可以定一个基准单元格,然后使用for...next循环语句和offset函数进行循环判断。
首先对固定的单元格区域命名,例如命名为:testarea
然后在某个角落不会使用到的单元格中(例如a65536)程序将会填入公式“=SUM(testarea)”,并与之前的求和值(存放在单元格a65535中)做比较,如果不同,表明区域的数值有变化。
然后在Calculate事件中作如下判断:
Private Sub Worksheet_Calculate()
Range("a65536").FormulaR1C1 = "=SUM(testarea)"
If Range("a65536").Value <> Range("a65535").Value Then
If Range("a65535").Value = "" Then '第一次判断
Range("a65535").Value = Range("a65536").Value
Else
'... ...固定的单元格区域数值有变化,再判断哪个单元格与之前的数值不同
End If
Else
'... ...固定的单元格区域数值没有变化,不用处理
End If
End Sub
查找具体哪些单元格数值有变化,需要将原固定的单元格区域中的数值复制到另一片区域,然后逐个单元格做比较,这里可以定一个基准单元格,然后使用for...next循环语句和offset函数进行循环判断。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询