【问题标题】:Pop up message box when a certain value is entered in a cell在单元格中输入某个值时弹出消息框
【发布时间】:2019-05-21 18:43:58
【问题描述】:

我有一个电子表格,如果特定单元格为“OH”,我希望弹出一个消息框。消息弹出后,我希望能够单击“确定”并继续前进。

目前我有:

Private Sub OH_MSG_Click()

If ThisWorkbook.Worksheets("Zip Code Entry").Range("State").Value = "OH" Then
  MsgBox "Please review OH Underwriting Guidelines."
End If

End Sub

如果我手动运行,这可行,但我怎样才能让它在 State = OH 时自动运行?

【问题讨论】:

  • 您可以通过在所需工作表中使用更改事件来执行此操作。见:stackoverflow.com/questions/10474356/vba-worksheet-change-event
  • 对上一条评论的警告 - 如果单元格由于公式重新计算而发生更改,则工作表更改事件将不起作用。不能说这里是否是这种情况。
  • 单元格不应该改变,但工作表上的其他内容会随着它们继续工作而改变,所以我在想是否每次他们在工作表上输入其他内容时都使用工作表更改事件它会弹出不是他们想要的。他们只是希望消息弹出一次作为提醒。

标签: excel vba msgbox


【解决方案1】:
  1. 在您的 Excel 文件中打开 Microsoft Visual Basic for Appllications。
  2. 在 Pojekt 视图中右键单击 Worksheet(左侧)。
  3. 选择代码视图。现在将出现代码窗口。
  4. 从代码窗口左上角的下拉菜单中选择“工作表”。
  5. 从右侧下拉菜单中选择“更改”。 然后放置您的代码(类似这样)示例:
Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Address = "$A$2") Then
If (Range("A2").Value = "OH") Then
MsgBox "Some message"
End If
End If
End Sub

这意味着:如果 A2 被选中并且此工作表中的任何单元格发生更改,宏将检查 If("A2").Value = "OH") 如果为 true,则消息框会出现如果 false 什么都没有发生。

【讨论】:

  • 但这意味着每当在他们工作的任何其他单元格中输入内容时,都会弹出消息,这不是他们想要的。我们只希望在该特定单元格发生更改并且该特定单元格 = OH 时弹出消息。
  • 不,仅当 A2 为 ActiveCell 时
  • 我认为您的意思是Target.Address,而不是ActiveCell.Address。它们不一定相同。
  • 我输入了 Private Sub Worksheet_Change(ByVal Target As Range) If (ActiveCell.Address = "$C$4") Then if Range.("C4").Value = "OH" Then MsgBox "Please查看 OH Underwriting Guidelines" End If End Sub,但我不断收到编译错误。预期:(“C4”)上的标识符或括号表达式。
  • 哦,是的,对不起,我就是这个意思。我将更改代码。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-01
  • 2022-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多