单元格值大于100时的Excel消息框

时间:2019-03-08 02:10:03

标签: excel vba

我有一个包含两行的报告,第一行是“项目”,第二行是“重量”。

将计算“权重”,如果总摘要超过100%,则Excel将显示警告框。

The form

你们能帮助我找到一种在Excel中制作方法的方法吗?

这是我以前使用的脚本:

Private Sub Worksheet_Change(ByVal Target As Range)
    Set Target = Me.Range("A2:B10")
    If Target.Value > 100 Then
        MsgBox "You exceeded 100"
    End If
End Sub

2 个答案:

答案 0 :(得分:1)

  

将计算“重量”

因此您可以执行以下两项操作之一:1)将worksheet_change事件基于将要更改以影响计算的单元格并检查计算结果:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Me.Range("A2:B10") is nothing Then
        If Me.Range("A2").Value > 100 Then 
            MsgBox "You exceeded 100"
       End If
    End If

End Sub

或2)您可以使用Calculate Event,这将在工作表每次计算时触发:

Private Sub Worksheet_Calculate()

    If Range("A2").Value > 100 Then 
        MsgBox "You exceeded 100"
    End If

End Sub

答案 1 :(得分:0)

也许这就是您的想法?

Private Sub Worksheet_Change(ByVal Target As Range)

    With Target
        If Not Application.Intersect(Range("A2:B10"), Target) Is Nothing Then
            If .Value > 100 Then
                MsgBox "You exceeded 100"
            End If
        End If
    End With
End Sub

只有更改Range(A2:B10)中的一个单元格,以上代码才会运行。它将查看更改后的单元格(即 Target ),如果其值大于100,则会发出一条消息。

参考您的评论,下面给出的上述代码的变化形式将得出受监视范围内的所有单元格,如果总数超过1,则发出一条消息,然后将选择返回给故障单元格。请注意,百分比表示为除以100。因此,值1将显示为100%。

Private Sub Worksheet_Change(ByVal Target As Range)
    Const RangeAddress As String = "A2:B10"
    Dim Ttl As Double

    With Target
        If Not Application.Intersect(Range(RangeAddress), Target) Is Nothing Then
            Ttl = Application.WorksheetFunction.Sum(RangeAddress)
            If Ttl > 1 Then
                MsgBox "You exceeded 100%"
                .Select
            End If
        End If
    End With
End Sub