如果目标单元格中​​的公式超过某个值,则VBA代码显示消息框弹出窗口

时间:2012-04-04 14:32:15

标签: excel vba excel-vba messagebox

如果单元格中的值超过某个值,我正在尝试编写一个简单的宏来显示弹出窗口(vbOKOnly)。

我基本上有一个包含产品和折扣的工作表。我在一个单元格中有一个公式,比如A1,它将折扣显示为所有条目的有效折扣百分比(50%或.5)。

我正在寻找的是当单元格A1的值超过50%时显示消息框的代码,因为另一个单元格的输入推动折扣超过50%。

谢谢!

3 个答案:

答案 0 :(得分:16)

您可以将以下VBA代码添加到工作表中:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("A1") > 0.5 Then
        MsgBox "Discount too high"
    End If
End Sub

每次在工作表上更改单元格时,它都会检查单元格A1的值。

注意:

  • 如果A1还依赖于位于其他电子表格中的数据,则在您更改该数据时,宏<<>不会。
  • 每次在工作表上发生变化时,都会调用将调用的宏。如果它有很多公式(如在1000年代),它可能会很慢。

Widor使用了不同的方法(Worksheet_Calculate代替Worksheet_Change):

  • 优点:如果A1的值与位于其他工作表中的单元格相关联,他的方法将起作用。
  • 缺点:如果您的工作表上有许多引用其他工作表的链接,他的方法会慢一点。

结论:如果A1仅依赖于位于同一工作表上的数据,请使用Worksheet_Change,否则请使用Worksheet_Calculate

答案 1 :(得分:2)

基本上,您希望将代码添加到相关工作表的Calculate事件中。

在VBA编辑器的“项目”窗口中,双击要在编辑器窗口顶部的下拉列表中添加代码的工作表,在左侧和右侧选择“工作表”和“计算”分别

或者,将下面的代码复制到您要使用的工作表的编辑器中:

Private Sub Worksheet_Calculate()

If Sheets("MySheet").Range("A1").Value > 0.5 Then
    MsgBox "Over 50%!", vbOKOnly
End If

End Sub

这样,每次工作表重新计算时,都会检查该值是否为&gt; 0.5或50%。

答案 2 :(得分:1)

我认为消息框不是最好的方法,因为您需要在循环中运行VB代码来检查单元格内容,或者除非您打算手动运行宏。在这种情况下,我认为最好在单元格中添加条件格式以将背景更改为红色(例如),如果值超过上限。