quocvietpm
Thành viên mới
- Tham gia
- 16/11/09
- Bài viết
- 12
- Được thích
- 0
Mọi người giúp em sửa code bên dưới. Số là em muốn trả về kết quả để dùng nó vào việc khác. Tuy nhiên Code này nó chỉ chạy đúng tầm 2 đến 3 lần. Nếu tiếp tục nhập mã nhân viên, các mã nhân viên nằm từ dòng 135 -->1 luôn trả về 135 trên hàm Match. Các mã nhân viên dòng 135 trở đi thì luôn luôn đúng. Mọi người chỉ giáo giúp. Nó không bị lỗi, chỉ là ra kết quả lúc được lúc không. Không biết code luôn (') luôn chuyển thành mặt cười, sửa thế nào nữa.
Private Sub txtoperatorcode_AfterUpdate() 'Update name basing on code
Dim Shman As Worksheet
Dim ocd As Long, position As Long
Dim status As String
Set Shman = ThisWorkbook.Worksheets("Man")
If WorksheetFunction.CountIf(Sheets("Man").Range("D"), Me.txtoperatorcode.Value) = 0 Then
MsgBox "This Operator Code is not on the list"
Me.txtoperatorcode.Value = ""
Exit Sub
End If
ocd = Me.txtoperatorcode.Value
position = WorksheetFunction.Match(ocd, Sheets("Man").Range("D1300"))
'status = Application.Lookup(ocd, Shman.Range("D"), Shman.Range("A:A"))
status = Application.Index(Sheets("Man").Range("A:A"), position, 0)
If status = "Active" Or status = "Leader" Or status = "Subleader" Then
On Error Resume Next
With Me
'ocd = .txtoperatorcode.Value
.txtoperatorname = Application.WorksheetFunction.VLookup(ocd, Shman.Range("D:E"), 2, 0)
If Err.Number <> 0 Then
.txtoperatorname = ""
End If
End With
Else
Me.txtoperatorname = ""
Me.txtoperatorcode = ""
End If
End Sub
Private Sub txtoperatorcode_AfterUpdate() 'Update name basing on code
Dim Shman As Worksheet
Dim ocd As Long, position As Long
Dim status As String
Set Shman = ThisWorkbook.Worksheets("Man")
If WorksheetFunction.CountIf(Sheets("Man").Range("D"), Me.txtoperatorcode.Value) = 0 Then
MsgBox "This Operator Code is not on the list"
Me.txtoperatorcode.Value = ""
Exit Sub
End If
ocd = Me.txtoperatorcode.Value
position = WorksheetFunction.Match(ocd, Sheets("Man").Range("D1300"))
'status = Application.Lookup(ocd, Shman.Range("D"), Shman.Range("A:A"))
status = Application.Index(Sheets("Man").Range("A:A"), position, 0)
If status = "Active" Or status = "Leader" Or status = "Subleader" Then
On Error Resume Next
With Me
'ocd = .txtoperatorcode.Value
.txtoperatorname = Application.WorksheetFunction.VLookup(ocd, Shman.Range("D:E"), 2, 0)
If Err.Number <> 0 Then
.txtoperatorname = ""
End If
End With
Else
Me.txtoperatorname = ""
Me.txtoperatorcode = ""
End If
End Sub