VBA代码抛出提示

需要您的帮助,修改代码或代码,以帮助我完成任务。 它是一个受保护的工作簿与VBA。 我在B18,D20,K11和M46的表格1上有一个下拉列表,每个下拉列表中的值列表。

当用户更改下拉列表B18和D20中的值时,我想用“ok”和“cancel”提示提示。 用户select“确定”它应该运行模块1(重命名表)。

有两件事我没能做到。 1.如果用户改变了除上述2个单元之外的其他任何下拉值,我不想抛出提示。 2.点击“确定”后,应该运行模块1。

请build议,如果你有更好的代码

Private Sub Worksheet_Change(ByVal Target As Range) Dim rNg As Range Set rNg = Range("B18", "D20") MsgBox "Please click Calculate Button", vbOKOnly, "Calculate button" End Sub 

尝试下面的代码。

(不明白你为什么要检查用户是否按下“ 确定 ”,因为你正在使用一个MsgBoxvbOKOnly ,他没有其他的select)

 Private Sub Worksheet_Change(ByVal Target As Range) Dim rNg As Range Dim IntersectRange As Range Dim message As Integer ' modify here to the Range you need monitored Set rNg = Range("B18", "D20") Set IntersectRange = Intersect(Target, rNg) If Not IntersectRange Is Nothing Then message = MsgBox("Please click Calculate Button", vbOKOnly, "Calculate button") If message = vbOK Then Call Module1 ' or your Module / Function name End If Else 'Do Nothing if outside range End If End Sub 

我不是说这是赖特方法,但可以使用用户窗体来创build自定义提示。 这就是我做这件事的方式,因为对我而言,它可以更好地控制我需要做的事情。

假设你创build一个带有ok和cancelbutton的用户窗体,那么你触发userform上的下拉值变化,

 Sub DropDown1_Change() UserForm1.Show End Sub 

然后编写好的代码并取消button点击

 Private Sub Ok_Click() UserForm1.Hide MsgBox "clicked ok" End Sub Private Sub cancel_Click() UserForm1.Hide MsgBox "clicked cancel" End Sub