需要您的帮助来修改有助于我完成任务的代码或代码。 它是一个受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
答案 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