当在单元格 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
现在,只有当指定工作表上的指定单元格具有指定数据时,消息框才会出现。