excel - 如果用户更改范围内单元格的任何值,则计算范围内的单元格
问题描述
我有这段代码可以工作并根据 A2:A5 中的内容计算 A1。如果我在 A2:A5 中有“1”,那么 A1 是 4。现在我将 A1 更改为“3”并想看看 A2:A5 会是什么,但它会反弹回“4”。我如何修改这个宏来实现这一点?我需要它适用于 A1:A5 范围内的任何单元格。
Private Sub Worksheet_Change(ByVal Target As Range)'
Dim A(1 To 5) As Range
Set A(1) = Range("A1")
Set A(2) = Range("A2")
Set A(3) = Range("A3")
Set A(4) = Range("A4")
Set A(5) = Range("A5")
If Intersect(Range("A1:A5"), Target) Is Nothing Then Exit Sub
Application.EnableEvents = False
A(1) = A(2) + A(3) + A(4) + A(5)
A(2) = A(1) - A(3) - A(4) - A(5)
A(3) = A(1) - A(2) - A(4) - A(5)
A(4) = A(1) - A(2) - A(3) - A(5)
A(5) = A(1) - A(2) - A(3) - A(4)
Application.EnableEvents = True
End Sub
解决方案
像这样的东西:
Private Sub Worksheet_Change(ByVal Target As Range) '
Dim A(1 To 5) As Range
Set A(1) = Range("A1")
Set A(2) = Range("A2")
Set A(3) = Range("A3")
Set A(4) = Range("A4")
Set A(5) = Range("A5")
If Intersect(Range("A1:A5"), Target) Is Nothing Then Exit Sub
Application.EnableEvents = False
If Intersect(A(1), Target) Is Nothing Then A(1) = A(2) + A(3) + A(4) + A(5)
If Intersect(A(2), Target) Is Nothing Then A(2) = A(1) - A(3) - A(4) - A(5)
If Intersect(A(3), Target) Is Nothing Then A(3) = A(1) - A(2) - A(4) - A(5)
If Intersect(A(4), Target) Is Nothing Then A(4) = A(1) - A(2) - A(3) - A(5)
If Intersect(A(5), Target) Is Nothing Then A(5) = A(1) - A(2) - A(3) - A(4)
Application.EnableEvents = True
End Sub
推荐阅读
- jquery - jquery show() 在 setTimeout() 方法后不起作用
- ajax - jsp-如何将值发送到数据库表进行处理?
- google-cloud-platform - 关于谷歌云平台报错:请求的54.0 CPUs超过了允许的最大值20.0
- python - 将 dicttoxml json 转储合并到一个 xml 文件
- php - 如何在laravel中使用mpdf为每个页面添加水印
- android - Android 不均匀设计
- arrays - 将从外部 Url 返回的 JSON 反序列化为 Object
- keras - 知道在 Keras 中每次前向传播使用卷积核的次数
- java - 如何在 Java jTextField 中显示来自 Arduino RFID 的数据
- teamcity - Teamcity Nuget 发布到 Octopus 存储库(内置)失败并出现 503 错误