VBA代码抛出提示

时间:2016-08-27 06:37:53

标签: excel vba excel-vba

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

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

我未能实现的两件事。 1.如果用户更改除上述2个单元格之外的任何其他下拉值,我不希望抛出提示。 2.单击“确定”时,它应运行模块1。

请建议您是否有更好的代码

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

2 个答案:

答案 0 :(得分:0)

尝试以下代码。

(不明白为什么要检查用户是否按下“确定”,因为您使用的是MsgBox vbOKOnly而他没有其他选项)

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

答案 1 :(得分:0)

我不是说这是wright方法,但您可以使用UserForm来创建自定义提示。这就是我这样做的方式,因为对我而言,它可以更好地控制我需要做的事情。

假设您使用ok和cancel按钮创建用户表单,然后在下拉值更改时触发userform,

Sub DropDown1_Change()
    UserForm1.Show
End Sub

然后编写ok代码和取消按钮点击

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

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