首页 > 解决方案 > 工作表更改:如果某个范围内的单元格值 >c8 -> MsgBox 并且如果其他单元格中的值(其中有函数)> 300 -> MsgBox

问题描述

我想要一个工作表更改宏,只要将大于 8 的值放入范围 (F14:J26) 中的一个单元格中,并且如果将大于 300 的值放入单元格 C37 中,就会弹出一个消息框。

我的问题是单元格 C37 没有手动填写,但里面有一个公式,所以它是对另外两个单元格的计算。而且我认为excel不会将其识别为一个值,因此只要该单元格中的结果高于300,它就不会做任何事情。

Option Explicit

 Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("F14:J26")) Is Nothing Then
            If Target.Value > 8 Then
                MsgBox "Was that accepted?"

          End If
    End If

   If Not Application.Intersect(Target, Range("C37")) Is Nothing Then
            If Target.Value > 300 Then
                 MsgBox "Was that accepted?"

          End If
    End If

End Sub

代码的第一部分可以正常工作。但是上面解释的第二部分没有。我还尝试将其拆分为两个单独的代码,但这显示了一个错误。对此的任何帮助将不胜感激!

标签: excelvba

解决方案


您有两个(也许更多)可能的选择:

  1. 使用“Worksheet_Calculate”事件,而不是“Worksheet_Change”事件。
  2. 如果 C37 中的公式是固定的,则不要监视 C37,而是监视源单元格。
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("F14:J26")) Is Nothing Then
          If Target.Value > 8 OR Range("C37").Value > 300 Then
                MsgBox "Was that accepted?"

          End If
    End If
End Sub

推荐阅读