首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当某个值在参考范围内更改时,VBA将更新公式

当某个值在参考范围内更改时,VBA将更新公式
EN

Stack Overflow用户
提问于 2017-01-26 07:31:28
回答 1查看 1.7K关注 0票数 1

我有一个Excel公式,其中给出了上星期五的日期“=-WEEKDAY() A1 (今天)-1”

只有当另一个工作表B2:D 469中的引用范围内的值发生变化时,我才想更新单元格A1。

下面是我正在使用的代码,但问题是只有在手动更改范围时,代码才能工作。但是,当源透视表刷新时,范围中的值将被更新。我希望在刷新pivot表时更新代码,"B2:D469“范围内的值将发生更改。

代码语言:javascript
运行
AI代码解释
复制
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range

Set KeyCells = Worksheets.("Source").Range("B2:D469")

If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then

Worksheets.("Dashboard").Range ("A1").EnableCalculation = True

End If
End Sub
EN

回答 1

Stack Overflow用户

发布于 2017-01-26 13:48:05

Range.Dependents

Range有一个属性Dependents,它是一个包含此范围影响的所有单元格的范围,即使这些单元格已被移除几个步骤。例如,如果C4为"= B4“,而B4为"=A4",则Range("A4").Dependents将同时包含B4和C4。

因此,在您的示例中,如果Target影响到您所关心的单元格,则它包含在范围Target.Dependents中。你可以用这个来完成你的目标。

如何使用它

使用以下代码作为ThisWorkbook.的代码我已经评论过了,但如果你有问题,可以在评论中随意提问。

代码语言:javascript
运行
AI代码解释
复制
Option Explicit

Private RangeToMonitor As Range
Private RangeToChange As Range

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

    '---If this is the first change since the workbook has been opened, define the ranges---
    If RangeToMonitor Is Nothing Then
        Set RangeToMonitor = Worksheets("Source").Range("B2:D469")
        Set RangeToChange = Worksheets("Dashboard").Range("A1")
    End If
    '---------------------------------------------------------------------------------------

    'First, check to see if Target is in the RangeToMonitor
    If Not Application.Intersect(Target, RangeToMonitor) Is Nothing Then
        'If so, set your date. Rather than using a formula in the cell - which could go haywire if someone messes with it - just set it straight from VBA
        RangeToChange.Value = Date - Weekday(Date) - 1
    'Second, check to see if a change to Target *triggers* any recalculation of cells in RangeToMonitor.
    'You can do this by looking at Dependents, which is all the cells affected by a change to Target, even several steps removed
    ElseIf hasDependents(Target) Then
        '(The above and below criteria cannot be done in one if condition because VBA boolean operators do not short circuit)
        If Not (Application.Intersect(Target.Dependents, RangeToMonitor) Is Nothing) Then
            RangeToChange.Value = Date - Weekday(Date) - 1
        End If
    End If
End Sub


'The reason for this function is that trying to use Target.Dependents when Target has no Dependents causes an error
'I use this function to verify that Target DOES have Dependents before attempting to find out if any of them affects RangeToMonitor
Private Function hasDependents(rng As Range)
On Error GoTo ErrHandler
    Dim test As Long
    test = rng.DirectDependents
    hasDependents = True
    Exit Function

ErrHandler:
    If Err.Number = 1004 Then
        '"No Cells Were Found"
        'This error signifies that Target has no Dependents, so we can safely ignore the change and exit the event.
        hasDependents = False
    Else
        Err.Raise Err.Number, , Err.Description
    End If
End Function
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41877029

复制
相关文章
VBA代码:将整个工作簿中的所有公式转换为值
有趣的是,不管工作簿中有多少张表,它都是用一个操作来处理的。通常情况下,都是试图通过遍历工作表来做到这一点,然而并没有那么有效。
fanjy
2023/10/10
1.5K0
VBA代码:将整个工作簿中的所有公式转换为值
判断当前时间是否在某个时间范围内
判断当前时间是否在某个时间范围内 各种活动在接口判单当时间是否在【活动】范围内——小时-分钟 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class CutTime { /** * 判断是否满足时间内 * @param CutTime限制时间 * @return */ public static boolean cutTime(String
红目香薰
2022/11/28
1.7K0
VBA 清除某个文件夹下的所有xls文件的公式
With Application.FileDialog(msoFileDialogFolderPicker)
办公魔盒
2019/07/22
1.9K0
VBA 清除某个文件夹下的所有xls文件的公式
在某个范围内随机生成一些数据_cut out删除造句
根据yolov4文献中提到的cutout数据增广方式,进行扩展阅读。Cutout & Random Erasing
全栈程序员站长
2022/09/27
4610
在某个范围内随机生成一些数据_cut out删除造句
Excel公式?VBA?还是Power Query!
最近,一直有朋友问我到底学不学VBA,我一般不建议他们学,除非对编程很感兴趣,或者本身已经有一定的编程基础,否则,将耗费大量的精力,而收效甚微。
大海Power
2021/08/30
3K0
使用VBA操作Excel公式栏
在Excel公式栏中,我们可以看到当前单元格中的内容,或者当前单元格中使用的公式,如下图1所示。
fanjy
2022/06/04
1.5K0
使用VBA操作Excel公式栏
PowerPoint VBA参考代码库1
代码中的ppLayoutBlank只是幻灯片布局选项之一,更多设置布局的选项值如下:
fanjy
2023/08/30
9560
PowerPoint VBA参考代码库1
PowerPoint VBA参考代码库2
fanjy
2023/08/30
5170
PowerPoint VBA参考代码库2
ECMWF 在全球范围内的预测数据将公开提供!
Credit: NicoElNino / iStock / Getty Images Plus
气象学家
2022/03/29
1.9K0
ECMWF 在全球范围内的预测数据将公开提供!
VBA: 判断某个Excel文件是否已打开
文章背景:在操作某个Excel文件时,有时需要判断该文件是否已打开。下面提供两种自定义函数。
Exploring
2022/09/20
6.2K0
Excel公式技巧61:插值公式技术
一个项目从2013年开始投资,相关数据如下图1所示,求该项目的投资回收期?也就是说,累计现金流等于0的那个时间点。
fanjy
2020/11/06
2.5K0
使用VBA将工作簿中所有的数据转换成值
通常,工作簿中会包含很多工作表,而工作表中的数据有些是单纯的数值,而有些是公式的结果。如果我们想要将工作簿中所有的数据都转换为值,也就是说,公式转换为其结果值,如何快速实现呢?
fanjy
2022/11/16
1.4K0
一起学Excel专业开发09:定义名称
可以给一个常量值定义名称,如下图1所示,定义常量VersionNum表示数字1.0。
fanjy
2019/09/03
1.1K0
一起学Excel专业开发09:定义名称
Excel编程周末速成班第24课:调试和发布应用程序
VBA提供了一些出色的工具来帮助你查找和修复程序bugs。本课程将讲解什么是bugs、如何处理它们,并介绍一些与发布应用程序有关的因素。
fanjy
2021/03/12
5.9K0
VBA数组的排序_vba函数返回值 数组
我们平时用的表格排序,只相对来说是在在表格中的升序降序。今天就好奇如果数组中实现排序 他是怎么实现的呢。
全栈程序员站长
2022/11/15
3.5K0
VBA数组的排序_vba函数返回值 数组
Excel公式技巧54: 在多个工作表中查找最大值/最小值
要在Excel工作表中获取最大值或最小值,我们马上就会想到使用MAX/MIN函数。例如,下图1所示的工作表,使用公式:
fanjy
2020/09/17
12K0
Excel公式技巧54: 在多个工作表中查找最大值/最小值
【Excel催化剂更新】文本公式表达式求值操作,类似VBA的Evaluate方法
第一种方式为是用使用命令按钮,原理是前面加上等号(=),然后将单元格数字格式转成常规。
Excel催化剂
2021/12/09
9220
【Excel催化剂更新】文本公式表达式求值操作,类似VBA的Evaluate方法
最后更新修改时间提示【可配置时间范围】
原文:https://laolion.com/archives/2547.html 今天在老狮的博客里到一个类似的博文,于是在本站也弄了一个,但样式并不符合我的审美,所以参照了一下Joe6.1版的时间提示样式改了改。
用户7162790
2022/03/23
6450
VBA技巧:当单元格区域中包含由公式返回的空单元格时,如何判断?
在VBA中,我们经常会遇到需要检查某个单元格区域是否为空的情形。我们可以使用下面程序中的代码来检查单元格区域是否为空。
fanjy
2022/06/04
2.3K0
WPF:无法对元素“XXX”设置 Name 特性值“YYY”。“XXX”在元素“ZZZ”的范围内,在另一范围内定义它时,已注册了名称。
2020-04-03 06:44
walterlv
2020/04/08
3.2K0

相似问题

当某个范围内的任何单元格通过公式更新时,VBA需要运行宏。

23

用于确定值是否在某个范围内的公式

12

VBA -在范围内更改公式

25

VBA在某个范围内查找单元格值

127

VBA挂起将公式粘贴到范围内

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档