在vba中弹出一条消息

时间:2014-06-01 11:25:10

标签: excel vba excel-vba range

我正在处理一个文件,在一个工作表中让我们称之为摘要,我有一个公式,计算在其他工作表中手动输入的值,所以我想有一个vba代码通过弹出消息通知我计算在其他工作表中进行数据输入时,摘要表中的结果为< = 0。 我发现下面的代码只能在一个单元格中正常工作但如果我想将它扩展到同一行中的其他单元格会导致错误。假设我想将它扩展到 B9:CZ9

Private Sub Worksheet_Calculate()
    If Me.Range("B9").Value <= 0 Then _
        MsgBox "Leave is finished!"
End Sub

3 个答案:

答案 0 :(得分:0)

可能的背景:

Private Sub Worksheet_Calculate()
    With Me.Range("B9:CZ9")
        If Application.CountIf(.Cells, "<=0") = .Cells.Count Then _
            MsgBox "Leave is finished!"
    End With
End Sub

答案 1 :(得分:0)

Private Sub Worksheet_Calculate()
    Dim RNG As Range
    Set RNG = Selection
    For Each c In RNG
        If c.Value <= 0 Then
            MsgBox "Leave is finished!"
        End If
    Next c

End Sub

答案 2 :(得分:0)

如果我理解正确,也许这段代码可以帮助您(您必须将此代码放在您希望使用此代码的正确工作表的源代码中):

Private Sub Worksheet_Calculate()
    Dim leave As Boolean: leave = False
    For Each c In Me.Range("B9:CZ9").Cells
        If c.Value <= 0 Then: leave = True
    Next
    If leave Then: MsgBox "Leave is finished!"
End Sub

此代码适用于在单元格中计算某些内容时,例如,当您在其中任何一个中键入=0时,并且不会为您提供大量的消息框。

如果您希望在更改内容时使用此功能,请使用Private Sub Worksheet_Change(ByVal Target As Range)

请注意,扩展程序xlsx不能包含VBA代码。因此,在您希望此代码可用于工作表的代码之后,您必须save it as macro-enabled workbook