【发布时间】:2015-02-12 19:48:40
【问题描述】:
欧拉
我正在使用名称管理器,其中包含每个部门的员工列表,现在我想在我的代码中查找每个员工的时钟编号。
我从每个部门的组合框 (CB_Department) 开始,然后查找每个部门的一系列员工 (CB_EName)。然后,我想从 excel 表中查找员工时钟编号,并将其直接输入到用户表单文本框(TB_ENumber)中。这条路线的原因是因为excel表是从Sql(姓名和时钟号)自动更新的,但工作人员在哪个部门工作是在工作表中管理的。
现在的问题是代码适用于第一个员工的部门更改,但是当我更改员工组合框时,文本框不会更新。有人可以告诉我我缺少什么
到目前为止我必须的代码
Sub CB_Department_Change()
Dim strRange As String
If CB_Department.ListIndex > -1 Then
strRange = CB_Department
strRange = Replace(strRange, " ", "_")
With CB_EName
.RowSource = vbNullString
.RowSource = strRange
.ListIndex = 0
End With
With TB_ENumber
.Text = Application.WorksheetFunction.VLookup(CB_EName, Sheet4.Range("A2:B200"), 2, False)
End With
Else
End If
End Sub
谢谢
【问题讨论】:
-
您的代码中缺少某些内容。似乎有两个
sub beginnigs,但只有一个end sub。此外,您不能在另一个sub中打开sub。接下来,您需要使用任何Change event触发您的操作,而您(尝试)在表单打开时触发它,因此它在启动时起作用。因此,请显示正确/改进的代码以供进一步支持。 -
嗨 KazJaw,抱歉,我不小心将私有子代码留在了代码中。问题正是我需要在第二个组合框(CB_EName)上使用更改事件触发第二步。如何在当前代码中包含该触发器?
-
为第二个组合框添加额外的触发器并放置在您要重复的代码中。或者将可重复的代码移动到外部子程序,然后从第一个和第二个组合框调用它。
-
感谢 Kazjaw,我已将代码移至外部子目录。