全局消息不同的消息框

我有以下简化的 VBA代码,当用户单击Excel电子表格中的一个button时,将显示一个消息框:

消息框A:

Sub Message_Box_A () Answer = MsgBox("Do you want to continue?", vbYesNo) If Answer = vbYes Then Sheets("Sheet1").Range("A1").Value = 1 Else End If End Sub 

消息框B:

 Sub Message_Box_B () Answer = MsgBox("Do you want to continue?", vbYesNo) If Answer = vbYes Then Sheets("Sheet2").Range("A1").Value = 1 Else End If End Sub 

有没有办法如何“全球化”消息框的文本“你想继续吗?” 所以如果我想改变它,我不需要通过每个消息框的每个VBA代码?

添加一个这样的function:

 Function Answer() As Long Answer = MsgBox("Do you want to continue?", vbYesNo) End Function 

那么你可以像这样使用它:

 Sub Message_Box_A () If Answer = vbYes Then Sheets("Sheet1").Range("A1").Value = 1 Else End If End Sub 

编辑

如果我们希望自动完成这样的答案作为@Peh评论。 我们可以用:

  Function Answer() As VbMsgBoxResult Answer = MsgBox("Do you want to continue?", vbYesNo) End Function 

我build议使用一个常量。 在一个模块插入…

 Const msgContinue = "Do you want to continue?" Sub Message_Box_A () Answer = MsgBox(msgContinue, vbYesNo) If Answer = vbYes Then Sheets("Sheet1").Range("A1").Value = 1 Else End If End Sub 

Terse版本:

 Public Function PlsContinue() As Boolean PlsContinue = MsgBox("Do you want to continue?", vbYesNo) = vbYes End Function Sub Message_Box_A() If PlsContinue Then Sheets("Sheet1").Range("A1").Value = 1 End Sub Sub Message_Box_B() If PlsContinue Then Sheets("Sheet2").Range("A1").Value = 1 End Sub 

编辑添加 – 灵活的版本,使用尽可能多的button,只要你喜欢,并从每个不同的值:

 Public Function PlsContinue() As Boolean PlsContinue = MsgBox("Do you want to continue?", vbYesNo) = vbYes End Function Sub Message_Box(ByVal sht As String, ByVal cel As String, vlu As Long) If PlsContinue Then Sheets(sht).Range(cel).Value = vlu End Sub Sub Message_Box_A() Message_Box "Sheet1", "A1", 1 End Sub Sub Message_Box_B() Message_Box "Sheet2", "A1", 1 End Sub Sub Message_Box_C() Message_Box "Sheet1", "A2", 2 End Sub 

我只是猜测,但也许下面的代码可以帮助你(特别是如果你有太多的Message_Box_X () Subs)。

 Private Sub CommandButton1_Click() WhichButton = "Sheet1" Message_Box (WhichButton) End Sub Private Sub CommandButton2_Click() WhichButton = "Sheet2" Message_Box (WhichButton) End Sub Sub Message_Box(WB As String) msgContinue = "Do you want to continue?" Answer = MsgBox(msgContinue, vbYesNo) If Answer = vbYes Then Sheets(WB).Range("A1").Value = 1 Else End If End Sub