事件取决于带有公式的单元格

Posted

技术标签:

【中文标题】事件取决于带有公式的单元格【英文标题】:Event dependent on cell with formula 【发布时间】:2018-05-26 00:44:07 【问题描述】:

我是 VBA 的新手,所以我会在这里问一个问题:

我有一个报告,它设置为更改正确的标题字体、大小和内容,所有这些都取决于一个单元格的值,如果我更改另一个单元格的值,它就会更新。问题是,它所依赖的值的单元格源于一个公式,该公式由时间线切片器控制。

切片器确定某个数据透视表的周期,变化的单元格取该周期的最大日期(单元格称为“EndDate”)。由此,具有标题输入的单元格显示当前季度(单元格称为“ReportNo”)。

我现在的代码如下:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Application.Intersect(Target, Me.Range("EndPeriod")) Is Nothing Then

        ThisWorkbook.Worksheets("Report").PageSetup.RightHeader = "&28" & Me.Range("ReportNo").Text

    End If

End Sub

有什么方法可以让工作表在公式相关单元格中的单元格值发生变化时运行 VBA?

我尝试将线程的第一个答案添加到代码中:

【问题讨论】:

您可以使用worksheet.calculate 事件。见msdn.microsoft.com/en-us/vba/excel-vba/articles/… 【参考方案1】:

这样的事情怎么样:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("EndPeriod").Address Then 'if something changes on ReportNo
Call yourmacro 'call your vba macro
End If
End Sub

Sub yourmacro()
    ThisWorkbook.Worksheets("Report").PageSetup.RightHeader = "&28" & Me.Range("ReportNo").Text
End Sub

将代码添加到:

【讨论】:

我不确定我是否理解将这段代码放在哪里?它是在我已经使用的代码之前还是之后?我是否应该将代码中的“灰色”文本更改为其他内容,如果是,那又如何? :-) 灰色文本是 cmets 以帮助您理解代码,代码应添加到包含范围 ReportNo... 的工作表中,因此您可以将代码替换为我的答案...跨度> 我已经添加了一张图片来说明代码应该去哪里......希望这能说清楚,你应该确保在顶部你选择了“工作表”并且在它的右边你应该选择“更改”,然后在此处添加代码,您可以在其下方,甚至在模块中添加您的宏代码... 我仍然不确定我是否理解。下面我尝试添加一张我所做的图片。我在你的代码之后输入了我的代码。或许你可以试着把这两个代码结合起来,这样我就知道具体怎么放了? 只需用我的代码替换您的代码,每次 ReportNo 上的任何更改都应运行 yourmacro,然后您可以编辑宏以执行您想要执行的任何操作,而不是简单的 msgbox..

以上是关于事件取决于带有公式的单元格的主要内容,如果未能解决你的问题,请参考以下文章

自定义公式 Google 电子表格

将带有单元格中公式的excel文件读入R

带有公式的单元格在 Excel 2010 中不计算

excel 公式中包含带公式的单元格,如何正确引用

Excel公式不更新单元格

为 UITableView 插入带有动画的行(并更新所有其他单元格)