当单元格达到确定值

时间:2016-09-23 11:16:08

标签: excel vba excel-vba

这是我的MS Excel VBA脚本

Sub Reached_150()

Dim cella As Range
Dim nomi As Range

For Each cella In [p2:p10]
    For Each nomi In [a2:a10]

    If cella.Value = 150 Then MsgBox "Lo studente " & nomi & " ha terminato le ore."
    Next nomi

Next cella

End Sub

在范围p2:p10中,我计算总数,当单元格的总和达到150时,它会显示名称在A列中的学生已完成小时数的消息。

关于我有两个问题: 1)第一个单元格到达150小时结束时,所有学生的姓名都会显示消息,我该如何避免? 2)如何自动而非手动制作脚本? 等待答案感谢任何能帮助我的人

2 个答案:

答案 0 :(得分:1)

我认为最有可能的情况是你试图在时间单元的相关行上捕获名称。

如果是这样,您的代码应为:

For Each cella In [p2:p10]
    If cella.Value = 150 Then MsgBox "Lo studente " & _
        cella.Offset(,-15).Value & " ha terminato le ore."

Next cella

答案 1 :(得分:1)

您尚未提及如果该值大于150会发生什么。如果您特别想要150,请从>下方移除">=150"

要使其自动使用Worksheet_Change事件。将其粘贴到图纸代码区域。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range, aCell As Range

    Set rng = Range("P2:P10")

    '~~> Check if there is any value >= 150 in that range
    If Application.WorksheetFunction.CountIf(rng, ">=150") Then
        For Each aCell In rng
            If aCell.Value >= 150 Then _
            MsgBox "Lo studente " & _
                   Range("A" & aCell.Row).Value & _
                   " ha terminato le ore."

        Next aCell
    End If
End Sub