这是我第一次使用VBA。我正在适应Contextures.com提供的脚本,该脚本带有“ Excel下拉列表自动将产品名称更改为代码”(https://www.youtube.com/watch?v=uLJEMnIT0zM)。我已经成功创建了一个下拉列表,该下拉列表添加了与用户选择的参数类型关联的ID(例如,当用户从数据条目Excel工作表的下拉列表中选择“叶绿素”时,Excel输入与该参数关联的ID号基于第二个工作表的表格中包含的列表在同一单元格中的名称)。但是,当我尝试添加更多选项时,脚本停止工作。修改后的代码为其他列下拉列表添加了两个ElseIf语句。
脚本运行时不会报告任何错误。同样,奇怪的是,它偶尔会在第一次尝试时起作用。代码如下。
在此先感谢您的帮助。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then GoTo exitHandler
If Target.Column = 2 Then
If Target.Value = "" Then GoTo exitHandler
Application.EnableEvents = False
Target.Value = Worksheets("CHLA Maps").Range("B1") _
.Offset(Application.WorksheetFunction _
.Match(Target.Value, Worksheets("CHLA Maps").Range("paramTypeList"), 0), 0)
Exit Sub
ElseIf Target.Column = 3 Then
If Target.Value = "" Then GoTo exitHandler
Application.EnableEvents = False
Target.Value = Worksheets("CHLA Maps").Range("F1") _
.Offset(Application.WorksheetFunction _
.Match(Target.Value, Worksheets("CHLA Maps").Range("labMethodList"), 0), 0)
Exit Sub
ElseIf Target.Column = 4 Then
If Target.Value = "" Then GoTo exitHandler
Application.EnableEvents = False
Target.Value = Worksheets("CHLA Maps").Range("J1") _
.Offset(Application.WorksheetFunction _
.Match(Target.Value, Worksheets("CHLA Maps").Range("parameterQCCodeList"), 0), 0)
Exit Sub
Else
Exit Sub
End If
exitHandler:
Application.EnableEvents = True
Exit Sub
End Sub
答案 0 :(得分:0)
您可以在if语句中删除退出子,但逻辑将始终退出。当前的退出子将不允许application.enableevents = true执行,并且事件处理将停止
我似乎无法发表评论,也不认为这对您来说是一个完整的答案。