2015-02-12 68 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