excel - 如何抑制更改事件以允许在 vlookup 期间使用全部值?
问题描述
我有一个带有名称和 ID #s 的组合框。在它下面是两个选项按钮:name
和employee ID
。用户可以单击其中一个或任何一个开始输入以在组合框中填充所需的值。
然后,我在下方有一个文本框来进行 vlookup 以填充该员工经理的姓名。一切正常,但更改事件并没有让我输入我想要的完整值,只有第一个实例。例如:如果我想输入员工 ID 12345,则一旦我输入 1 并使用它找到的第一个值执行子程序,就会触发更改事件。如何允许我在触发查找之前完全输入我想要的内容?
代码:
Private Sub cmbEmployee_Change()
Dim strID, vMgrName
If optID = True Then 'if user clicks on employee ID option button
strID = Left(cmbEmployee, 7) 'find the employee ID on left in combo box
Else
strID = Right(cmbEmployee, 7) 'find the employee ID on right in combo box
End If
vMgrName = Application.VLookup(strID, _
Worksheets("MasterDB").Range("A:U"), 21, False) 'find mgr name in column U
txtMgrName.Value = IIf(IsError(vMgrName), "-", vMgrName)
End Sub
解决方案
将您的“更改”事件更改为“更新后”
Private Sub cmbEmployee_AfterUpdate()
MsgBox "macro triggered"
End Sub
或者,您可以阻止宏触发,直到值不够长
Private Sub cmbEmployee_Change()
If Len(Me.cmbEmployee.Value) > 5 Then
MsgBox "macro triggered"
End If
End Sub
推荐阅读
- react-native - 如何使用选项卡视图滚动全屏?
- node.js - 在 node.js 中创建多个数据库
- ansible - 如何确定主机是容器还是具有可靠事实的虚拟机?
- python - 将特定键添加到“模板”
- signalr - 如何注册 Webhook?
- php - SQL和PHP中结果之间的utf8_encode区别
- vb.net - 保存图片框中的图像
- javascript - Next.js 应用程序使用 minikube 在本地机器上的 docker 容器中构建,但不构建在使用谷歌云 kubernetes 设置的登台上
- c# - 在 Consul 上注册服务_意外响应
- php - 如何从每个类别中获取 2 个产品