每个工作表上都会出现消息框

每个工作表上都会出现消息框

当在单元格 H3 中输入今天的日期时,我使用以下代码填充消息框。问题是消息框出现在每个工作表上。我只希望它出现在我放置代码的工作表上(在本例中为“Sheet1”),并且我希望消息一直弹出,直到日期被删除。请帮忙!

Sub Worksheet_Calculate()
Dim myMessage As String

    myMessage = ""

    If Range("H3").Value = Date Then
        If (myMessage <> "") Then myMessage = myMessage & vbCrLf
        myMessage = myMessage & "You have a new message. Delete the date next to the message box to acknowledge this message."

    End If

    If (myMessage <> "") Then MsgBox (myMessage)

End Sub

答案1

我这样做的方法是使用您创建的子例程创建一个宏,然后从您正在处理的工单上的 Worksheet_Change 事件中调用它。

第一步:创建宏(开发人员 > 宏)

下一步:将您的代码放入宏中,添加一个变量来传递工作表名称。

Sub Worksheet_Calculate(SheetName as String) 
Dim myMessage As String

myMessage = ""

If Sheets(SheetName).Range("H3").Value = Date Then
If (myMessage <> "") Then myMessage = myMessage & vbCrLf
    myMessage = myMessage & "You have a new message. Delete the date next to the message box to acknowledge this message."

End If

If (myMessage <> "") Then MsgBox (myMessage) 
End Sub

最后:返回工作簿并右键单击工作表选项卡。选择查看代码并添加 Worksheet_Activate() 子例程,该子例程调用在宏中创建的子例程(将工作表名称作为参数传递)。

Private Sub Worksheet_Activate()
    Worksheet_Calculate "Sheet1" 
End Sub

现在,只有当指定工作表上的指定单元格具有指定数据时,消息框才会出现。

相关内容