Vba 如何使用公式根据触发事件更新单元格?

Vba 如何使用公式根据触发事件更新单元格?,vba,excel,powerquery,Vba,Excel,Powerquery,我的最终目标是每分钟刷新一次Power SQL查询。 A2中每次更新后,宏应将A2中的值与B2中的值进行比较 IF A2 > B2 Then B2 = A2 Else B2 = B2 这是我曾尝试一起蹒跚而行的东西。。。大多数SO文章都展示了如何显示消息框,但我需要一个单元格来更新 Private Sub Worksheet_Calculate() Application.EnableEvents = False ActiveSheet.Calculate D

我的最终目标是每分钟刷新一次Power SQL查询。 A2中每次更新后,宏应将A2中的值与B2中的值进行比较

IF A2 > B2 Then B2 = A2 Else B2 = B2
这是我曾尝试一起蹒跚而行的东西。。。大多数SO文章都展示了如何显示消息框,但我需要一个单元格来更新

Private Sub Worksheet_Calculate()

    Application.EnableEvents = False

    ActiveSheet.Calculate
    DoEvents

    With Range("B2")
        .Value = .Value
        DoEvents
    End With

    Application.EnableEvents = True
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address = "$A$2" And Range("A2").Value > Range("B2").Value Then
        Range("B2").Value = Range("A2").Value
    End If

End Sub
请帮忙!当值更改时,我可以获取要填充的消息框,但如果A2>B2,则无法获取要更新的单元格B2

谢谢

聚丙烯


尝试用以下代码替换您的代码



要放置断点,请单击左侧的灰色条,如下图所示


这不是初始的
Application.EnableEvents=False
防止触发
工作表\u Change()
event?@DisplayName现在正在尝试。谢谢你的反馈。嘿@paul谢谢你的回复!我需要一些澄清。那么我要保留顶部吗?此外,我是超级noob与VBA和刚刚有工作表级代码。我没有模块或任何不确定是否需要的东西。如果这是它的外观,它会抛出一个错误。“Option Explicit”部分显示在第一个子错误下:“只有注释可以出现在end sub、end function或end property之后。很抱歉进一步澄清-我最初有两个sub。当我将代码粘贴到第二个子代码中以替换它时,它将显式选项放入第一个子代码中,并抛出and error。它不再抛出编译错误。我保存了密码。保存了excel手册。关闭excel并重新打开。A2中的值在刷新时更新,但B2中的值保持为零。也许我在宏级或模块级缺少了一些东西?好吧,如果我手动更改A2中的值,代码会工作,但是如果查询运行并更新A2值,或者如果我手动刷新A2值,代码会工作。代码更改已编译,但结果相同。A2和中的值大于B2,但B2未更新。为了测试,我在A2和B2中设置了两个值=12。然后运行刷新以触发查询。A2更新为32,但B2保持在12。
Option Explicit

Private Sub Worksheet_Calculate()
    Me.Range("B2").Value2 = Me.Range("B2").Value2
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    If Val(Me.Range("A2")) > Val(Me.Range("B2")) Then
        Application.EnableEvents = False
        Me.Range("B2") = Me.Range("A2")
        Application.EnableEvents = True
    End If
End Sub