TẠO BẢNG CHỌN DỮ LIỆU
(DATA SELECTOR)
Trong các doanh nghiệp nhỏ dữ liệu thường được bố trí trên Excel. Một số chủ
doanh nghiệp không quan m đến việc bố trí các dữ liệu này. Công việc thiết kế
s dụng dữ liệu này hoàn toàn giao cho các kế toán viên. Một số kế toán viên
khi thiết kế và btrí các dữ liệu lại không quan tâm đến việc sdụng lại các dữ
liệu sau này khi doanh nghiệp phát triển. Việc thiết kế các bảng lưu trữ, các bảng
cho khách ng, nhân viên bán hàng, các sản phẩm bán ra,...là công việc rất
quan trọng ban đầu để móc nối các dữ liệu với nhau trong công việc ssố liệu
như: theo dõi công nợ, theo dõi doanh số, phân tích theo các yêu cầu...vv.
Vấn đề tôi đặt ra đây là khi móc nối các dliệu với nhau bạn sẽ phải làm việc
nhiều đến việc lựa chọn một số mã từ các bảng mã. Làm sao để công việc lựa chọn
của bạn được dễ dàng? Liệu Excel cung cấp cho ta công cụ này không? Vâng,
Excel cung cấp cho ta một số công cụ nhưng theo kinh nghiệm bản thân, tôi
nghĩ cách tốt nhất vẫn là tmình thiết kế cho mình một bảng chọn. Còn các số liệu
khác bạn có thể lấy ra từ các hàm chuẩn của Excel.
Ở đây tôi xin đưa ra một ví dụ nhỏ về việc tạo bảng chọn, để chọn mã sản phẩm từ
bảng sản phẩm.
Ví dtrong sheet MaSanPham, tôi có bảng mã sản phẩm như sau:
1/Đặt tên vùng :
Tôi đặt tên cho vùng A2:B570 tên MaSanPham. Bằng cách đánh dấu vùng
A2:B570 vào Insert / Name / Define. Trong hộp thoại phần Names in Workbook
bạn gõ và MaSanPham , sau đó nhấn nút OK.
2/ Phần 2 : Thiết kế form để người dùng chn lựa mã sản phẩm.
Tcửa sổ Excel bạn nhấn tổ hợp phím Alt + F11. Cửa sổ VBE xuất hiện, sau đó
bạn chọn Insert/UserForm . Ta đặt tên form là frmDataSelector, thuộc tính Caption
là Data Selector. Trên form ta đặt các đối tượng gồm có:
- 1 TextBox có tên là TxtCode
- 1 nút lệnh có tên là cmdOK
- 1 nút lệnh có tên là cmdCancel
- 1 ListView tên LVDataSelector. ối tượng ListView trên thanh Toolbox,
nếu không có bạn phải vào Tools/Additional Controls và chọn
3/ Phần 3: Copy đoạn mã sau vào Module. Đon mã trong Module, bạn không cần
sửa chỗ nào cả.
Sau đó bạn chọn Insert/Module đặt tên Module DataSelector vào các m
và thủ tục sau:
Code:
Option Explicit
Function RangeNameExists(Nname) As Boolean
' Kiem tra xem Ten bang co ton tai hay khong?
' Neu ton tai thi tra ve TRUE
Dim n As Name
RangeNameExists = False
For Each n In ActiveWorkbook.Names
If UCase(n.Name) = UCase(Nname) Then
RangeNameExists = True
Exit Function
End If
Next n
End Function
' Day la ham de xuat cac du lieu tu Bang da duoc dat ten
' sang mot mang
Code:
Function TableToArray(ByVal TableName As String)
Dim arr
Dim vRange As Range
Dim i As Long, j As Long, m As Long, n As Long
If Not RangeNameExists(TableName) Then Exit Function 'Neu khong ton tai thi
thoat
On Error Resume Next
Set vRange = Range(TableName)
i = vRange.Rows.count
j = vRange.Columns.count
ReDim arr(1 To i, 1 To j)
For m = 1 To i
For n = 1 To j
arr(m, n) = vRange(m, n).Value
Next n
Next m
TableToArray = arr
Set vRange = Nothing
End Function
'Chuyen tu mang sang ListView va dinh dang ListView
Code:
Sub ArrayToListview(ByVal VlistView As Listview, ByVal InputArray)
Dim m As Long
Dim i As Integer, j As Integer