这是我的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)如何自动而非手动制作脚本? 等待答案感谢任何能帮助我的人
答案 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