If 语句不适用于 Worksheet_Change

问题描述 投票:0回答:1

我正在尝试使用 Power Query 从国家气象局提取河流水位数据,然后使用 VBA 在河流水位超过特定水平时自动向我的电子邮件地址发送电子邮件通知。

我已成功启动并运行 Power Query,但 VBA 部分遇到问题。我目前正在使用以下代码:

Dim xRg As Range

Private Sub Worksheet_Change(ByVal Target As Range)
   On Error Resume Next
   Set xRg = Intersect(Range("B2"), Target)
   If xRg Is Nothing Then Exit Sub
   If IsNumeric(Target.Value) And Target.Value > 15 Then
      Call Mail_small_Text_Outlook
   End If
End Sub

我的问题是,当 Power Query 自动刷新时,它会触发 Worksheet_Change 事件,但无论单元格 B2 的值如何,都会发送电子邮件。我希望它仅在值超过 15 时才发送电子邮件。

到目前为止,我已尝试添加以下代码来解决该问题。

If IsNumeric(Target.Value) And Target.Value <= 15 Then Exit Sub

上面的代码确实有助于在值不超过 15 时阻止事件发送电子邮件,但它也阻止了 Power Query 自动刷新时触发事件。我需要在 Power Query 刷新时触发 Worksheet_Change 事件才能使这个想法发挥作用。

如果我能够解决这个问题,我希望添加一个按钮或类似的东西来关闭 Worksheet_Change 事件并阻止它多次发送电子邮件。

提前感谢任何愿意帮助我的人!

excel vba powerquery worksheet-function
1个回答
0
投票
  • 避免使用“出现错误时继续下一步”,除非您确定有意忽略特定错误。
  • 如果没有其他过程(子/函数)访问变量
    xRg
    ,则应将
    Dim
    移至
    Worksheet_Change
  • 如果
    Target
    是多个单元格范围
Private Sub Worksheet_Change(ByVal Target As Range)
   Dim xRg As Range
   Set xRg = Intersect(Range("B2"), Target)
   If xRg Is Nothing Then Exit Sub
   If IsNumeric(Range("B2").Value) And Range("B2").Value > 15 Then
      Call Mail_small_Text_Outlook
   End If
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.