Thông tin tài liệu:
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 tâm đến việc bố trí các dữ liệu này. Công việc thiết kế và 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à bố trí các dữ liệu lại không quan tâm đến việc sử dụ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 mã cho khách hàng, nhân viên bán hàng, các sản...
Nội dung trích xuất từ tài liệu:
TẠO BẢNG CHỌN DỮ LIỆU (DATA SELECTOR) 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 tâm đến việc bố trí các dữ liệu này. Công việc thiết kếvà 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ênkhi thiết kế và bố trí các dữ liệu lại không quan tâm đến việc sử dụ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ảngmã cho khách hàng, nhân viên bán hàng, các sản phẩm bán ra,...là công việc rấtquan trọng ban đầu để móc nối các dữ liệu với nhau trong công việc sử lý số liệunhư: 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 dữ liệu với nhau bạn sẽ phải làm việcnhiề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ọncủa bạn được dễ dàng? Liệu Excel có cung cấp cho ta công cụ này không? Vâng,Excel có cung cấp cho ta một số công cụ nh ưng theo kinh nghiệm bản thân, tôinghĩ cách tốt nhất vẫn là tự mình thiết kế cho mình một bảng chọn. Còn các số liệukhá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í dụ trong 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 có tên là MaSanPham. Bằng cách đánh dấu vùngA2:B570 vào Insert / Name / Define. Trong hộp thoại phần Names in Workbookbạn gõ và MaSanPham , sau đó nhấn nút OK.2/ Phần 2 : Thiết kế form để người dùng chọn lựa mã sản phẩm.Từ cử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 Captionlà 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 có tên là 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ọn3/ Phần 3: Copy đoạn mã sau vào Module. Đoạn mã trong Module, bạn không cầnsửa chỗ nào cả.Sau đó bạn chọn Insert/Module đặt tên Module là DataSelector và gõ vào các hàmvà thủ tục sau:Code:Option ExplicitFunction RangeNameExists(Nname) As Boolean Kiem tra xem Ten bang co ton tai hay khong? Neu ton tai thi tra ve TRUEDim n As NameRangeNameExists = FalseFor Each n In ActiveWorkbook.NamesIf UCase(n.Name) = UCase(Nname) ThenRangeNameExists = TrueExit FunctionEnd IfNext nEnd Function Day la ham de xuat cac du lieu tu Bang da duoc dat ten sang mot mangCode:Function TableToArray(ByVal TableName As String)Dim arrDim vRange As RangeDim i As Long, j As Long, m As Long, n As LongIf Not RangeNameExists(TableName) Then Exit Function Neu khong ton tai thithoatOn Error Resume NextSet vRange = Range(TableName)i = vRange.Rows.countj = vRange.Columns.countReDim arr(1 To i, 1 To j)For m = 1 To iFor n = 1 To jarr(m, n) = vRange(m, n).ValueNext nNext mTableToArray = arrSet vRange = NothingEnd FunctionChuyen tu mang sang ListView va dinh dang ListViewCode:Sub ArrayToListview(ByVal VlistView As Listview, ByVal InputArray)Dim m As LongDim i As Integer, j As IntegerDim bHang As Long, bCot As Long, bHeader As IntegerDim it As ListItemDim anItemIf Not IsObject(VlistView) Then Exit SubOn Error Resume NextDem so hang va so cot trong InputArraybHang = UBound(InputArray, 1)bCot = UBound(InputArray, 2)Dinh dang ListViewVlistView.View = lvwReportVlistView.FullRowSelect = TrueVlistView.MultiSelect = FalseVlistView.Gridlines = TrueVlistView.LabelEdit = lvwManualVlistView.HideColumnHeaders = TruebHeader = VlistView.ColumnHeaders.countSelect Case bHeader Xac dinh so cot cua ListViewCase Is < bCotFor i = bHeader + 1 To bCotVlistView.ColumnHeaders.Add iNext iCase Is = bCotKhong lam gi caCase Is > bCotKhong lam gi caEnd SelectDien cac gia tri tu Inputarray vao ListviewFor i = 1 To bHangFor j = 1 To bCotanItem = InputArray(i, j)If j = 1 ThenSet it = VlistView.ListItems.Add()it.Text = anItemElseit.SubItems(j - 1) = anItemEnd IfNext jNext iDat do rong cac cotFor i = 1 To bCotVlistView.ColumnHeaders(i).Width = 150Next iSet it = NothingExit SubTbloi:MsgBox Xin loi, khong the dua mang vao Listview , vbCritical, Th?b?End SubDua tu bang vao mang, sau do dua tu mang vao ListviewVa di nhien ban cung co the chuyen tu bang vao ListViewCode:Sub NhapDuLieu()On Error Resume NextCall DataSelector(MaVatTu)End SubSub DataSelector(Tenbang As String)Dim bMang1On Error Resume NextbMang1 = TableToArray(Tenbang)Call ArrayToListview(frmDataSelector.LVDa ...