从数据验证下拉列表触发Excel VBA中的事件
我有一个表格,我想让用户选择计算类型。计算类型通过数据验证中的列表选择完成。一旦选中,我希望它触发一个事件,然后加载该类型选择的正确单元格。如何在“数据验证”下拉列表中检测数据更改事件,或者是否需要为此使用active x控件 工作表更改事件的代码未激活:从数据验证下拉列表触发Excel VBA中的事件,vba,excel,validation,Vba,Excel,Validation,我有一个表格,我想让用户选择计算类型。计算类型通过数据验证中的列表选择完成。一旦选中,我希望它触发一个事件,然后加载该类型选择的正确单元格。如何在“数据验证”下拉列表中检测数据更改事件,或者是否需要为此使用active x控件 工作表更改事件的代码未激活: Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.count > 1 Then Exit Sub Application.EnableEvents
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.count > 1 Then Exit Sub
Application.EnableEvents = False
On Error GoTo Errortrap
'~~> Change it to the relevant string with which you want to compare
StringToCheck = "+"
If Not Intersect(Target, Range("D47")) Is Nothing Then
'~~> Check for the cell value
If Target.Value = StringToCheck Then
'setup row to capture addition fields
Cells(33, 4).Value = "Input File 1"
Cells(33, 4).Value = "Worksheet 1"
Cells(33, 4).Value = "Cell 1"
Cells(33, 4).Value = "Input File 2"
Cells(33, 4).Value = "Worksheet 2"
Cells(33, 4).Value = "Cell 2"
End If
End If
LetsContinue:
Application.EnableEvents = True
Exit Sub
Errortrap:
MsgBox Err.Description
Resume LetsContinue
End Sub
你的代码很好。
我在一本新的工作簿中试用了它,它做的正是它应该做的。当您将D47中的值更改为“+”(通过下拉或手动方式)时,它会在单元格D33中依次写入六个值 也许你是想写信
Cells(33, 4).Value = "Input File 1"
Cells(33, 5).Value = "Worksheet 1"
Cells(33, 6).Value = "Cell 1"
Cells(33, 7).Value = "Input File 2"
Cells(33, 8).Value = "Worksheet 2"
Cells(33, 9).Value = "Cell 2"
因此,代码将填充范围D33:I33,而不是将所有内容写入D33您的代码很好。
我在一本新的工作簿中试用了它,它做的正是它应该做的。当您将D47中的值更改为“+”(通过下拉或手动方式)时,它会在单元格D33中依次写入六个值 也许你是想写信
Cells(33, 4).Value = "Input File 1"
Cells(33, 5).Value = "Worksheet 1"
Cells(33, 6).Value = "Cell 1"
Cells(33, 7).Value = "Input File 2"
Cells(33, 8).Value = "Worksheet 2"
Cells(33, 9).Value = "Cell 2"
因此,代码将填充范围D33:I33,而不是将所有内容写入D33,这在过去已被多次讨论过。在SO中进行搜索。看到我发布的这个代码示例,我做了一次搜索,没有找到任何东西-一定是使用了错误的搜索术语。我用一个链接更新了上面的评论。您必须使用
工作表\u Change
事件来捕获对具有DV.Hmm的单元格的更改,现在的问题是为什么在我的工作簿中没有检测到更改事件?计算设置为自动,我甚至在工作表中添加了“Application.Calculation=xlCalculationAutomatic”。激活事件可能是因为enablevents
已关闭?请参阅此链接。请参见第3点,执行此操作。按CTL G弹出即时窗口,然后在即时窗口中键入该选项。application.EnableEvents=True,然后重试。如果你用你正在尝试的代码更新你的问题也会有帮助…这在过去已经被讨论过很多次了。在SO中进行搜索。看到我发布的这个代码示例,我做了一次搜索,没有找到任何东西-一定是使用了错误的搜索术语。我用一个链接更新了上面的评论。您必须使用工作表\u Change
事件来捕获对具有DV.Hmm的单元格的更改,现在的问题是为什么在我的工作簿中没有检测到更改事件?计算设置为自动,我甚至在工作表中添加了“Application.Calculation=xlCalculationAutomatic”。激活事件可能是因为enablevents
已关闭?请参阅此链接。请参见第3点,执行此操作。按CTL G弹出即时窗口,然后在即时窗口中键入该选项。application.EnableEvents=True,然后重试。如果你用你正在尝试的代码更新你的问题也会有帮助。。。