2015-02-12 64 views
0

厄拉VBA,文本框VLOOKUP

我使用的是名经理,每个部门的员工的名单,现在我想查找我的代码里面每名雇员的时钟数。

我从我的Combobox每个部门(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 

感谢

+0

也有一些是在你的代码失踪。看起来有两个'sub beginnigs'但只有一个'end sub'。此外,你不能在其他'sub'里面打开'sub'。接下来,您需要在任何“更改事件”时触发您的操作,而您尝试在表单打开时触发它,因此它在启动时起作用。因此,请显示正确/改进的代码以进一步支持。 – 2015-02-12 10:03:26

+0

HI KazJaw,对不起,我不小心将代码中的私人小组留下。问题恰恰在于,我需要在第二个组合框(CB_EName)上发生更改事件时触发第二步。我将如何在当前代码中包含该触发器? – Sergeistz 2015-02-12 11:17:18

+0

为第二个组合框添加额外的触发器,并放置在要重复的代码中。或者将可复制代码移到外部子区域,并从第一个和第二个组合框中调用它。 – 2015-02-12 11:19:43

回答

0

感谢Kazjaw

Private 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 

Else 

End If 
End Sub 


Private Sub CB_EName_Change() 

     With TB_ENumber() 
      .Text = Application.WorksheetFunction.VLookup(CB_EName, Sheet4.Range("A2:B200"), 2, False) 
     End With 
End Sub