我有一个包含两行的报告,第一行是“项目”,第二行是“重量”。
将计算“权重”,如果总摘要超过100%,则Excel将显示警告框。
你们能帮助我找到一种在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
答案 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