- Tham gia
- 13/6/06
- Bài viết
- 7,199
- Được thích
- 24,656
Sưu tầm từ Pcworld
Hỏi:
Tôi có một bảng tính có cột mã số hàng hoá được nhập liệu hàng ngày. Tôi muốn kiểm tra việc nhập liệu có bị sai so với cột mã số hàng hoá chuẩn hay không thì phải làm sao?
Đáp:
Excel cho phép ta khai báo một số hàm sự kiện cho một số sự kiện trên từng worksheet Excel, thí dụ hàm Worksheet_SelectionChange() sẽ được kích hoạt mỗi lần ta thay đổi cell làm việc trong worksheet tương ứng, do đó bạn có thể kiểm tra việc nhập liệu trong 1 cột nào đó có đúng qui định không thông qua hàm xử lý sự kiện Worksheet_SelectionChange(). Thí dụ để kiểm tra việc nhập mã hàng hóa theo yêu cầu của bạn, bạn hãy tiến hành qui trình các bước cụ thể như sau:
- Chạy Excel, mở file Excel chứa bảng tính dữ liệu của bạn.
- nhập danh sách mã hàng hóa hợp lệ vào worksheet, thí dụ từ cell P1 tới cell P20.
- chọn menu Tools.Macro.Visual Basic Editor để mở cửa sổ soạn code VBA.
- trong cửa sổ Project, dời chuột về mục Sheet1 (sheet chứa bảng số liệu), ấn kép chuột vào nó để mở cửa sổ soạn code cho worksheet tương ứng.
- ấn chuột vào ListBox "Object" để hiển thị các đối tượng lập trình hiện có trong worksheet tương ứng, chọn mục Worksheet để tạo hàm Worksheet_SelectionChange() cho worksheet này.
- Soạn code cho hàm Worksheet_SelectionChange() theo yêu cầu kiểm tra của bạn:
'khai báo hằng miêu tả cột đầu và cuối của bảng dữ liệu
Const StartRow = 2
Const EndRow = 33
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Val As String
Dim r As Integer
'kiểm tra nếu cell không phải là cột A thì thôi
If Target.Offset.Column <> 1 Then Exit Sub
r = Target.Offset.Row - 1
'kiểm tra nếu cell không nằm trong phạm vi thì thôi
If (StartRow <= r) And (r <= EndRow) Then
Val = Target.Cells(0, 1).Value
'kiểm tra nội dung cell có hợp lệ không
kq = Application.VLookup(Val, Range("$P$1:$P$20"), 1)
If IsError(kq) Or (kq <> Val) Then MsgBox "Ban da nhap sai ma hang : " & Val
End If
End Sub
Do đối số của hàm Worksheet_SelectionChange() xác định vị trí cell hiện hành chứ không phải là vị trí cell cũ (vừa bị thay đổi nội dung), muốn để hàm trên hoạt động đúng theo yêu cầu thì sau khi nhập mới nội dung 1 cell của cột mã hàng hóa, bạn phải dùng phím Enter hay ¯ để kích hoạt được hàm kiểm tra trên.