Cách Tạo Form Quản Lý Khách Hàng Bằng Excel (Phần 2)
Ở phần 1 mình đã giới thiệu tới các bạn những bước đầu của việc tạo một Form quản lý khách hàng bằng Excel. Phần 2 này mình sẽ hướng dẫn các bạn về phần Code VBA để hoàn thành một Form quản lý khách hàng bằng Excel.
NỘI DUNG
>> Xem bài trước: Cách Tạo Form Quản Lý Khách Hàng Bằng Excel (Phần 1)
Tải Form Quản Lý Khách Hàng
Video hướng dẫn thực hiện
Hiển thị thông tin khách hàng
Để khi tích vào một khách hàng bất kỳ thì thông tin khách hàng đó được hiển thị lên những ô họ tên khách hàng, địa chỉ, thành phố,... thì ta thực hiện như sau.
Trong sheet1 của chương trình tích vào khách hàng nào thì nổi bật thông tin của khách hàng đó ta gọi tên một chương trình mà ta sẽ viết. Ta đặt tên cho chương trình đó là getcustom, tiếp theo ta kích chuột phải vào sheet1 -> Insert -> Module tức là ta sẽ tạo Module để viết code.
Tiếp theo bạn viết chương trình mở đầu là Sub tên chương trình là tên mình gọi lúc nãy (getcustom) -> Enter xuống hàng để hiển thị phần End Sub.
Bên trong Sub End Sub ta dùng vòng lặp with Sheet1 xuống hàng End with tức là sheet mình đang thao tác là sheet1 và cú pháp này sẽ giúp ta viết cú pháp ngắn hơn.
Bên trong hàm With mình dùng câu lệnh .Range("E5").Value = .Cells(.Range("B10"), 4).Value. E5 ở đây là ô mà mình sẽ cho xuất hiện họ tên khách hàng, B10 là ô mà đại diện cho số hàng mình kích chọn số 4 là cột D tính từ A B C D thì cột D là số 4. Bây giờ mình có thể test thử nhưng mới chỉ hàm xuất hiện họ tên.
Tiếp theo ta copy câu lệnh .Range("E5").Value = .Cells(.Range("B10"), 4).Value thành sáu bản sao và sửa lại cột E5 và số4 sao cho đúng với số ô trong bản lưu thông tin khách hàng. Chạy thử chương trình và kết quả.
Đoạn code
Sub getcustom()
With Sheet1
.Range("E5").Value = .Cells(.Range("B10"), 4).Value
.Range("E7").Value = .Cells(.Range("B10"), 5).Value
.Range("E9").Value = .Cells(.Range("B10"), 6).Value
.Range("H5").Value = .Cells(.Range("B10"), 7).Value
.Range("H7").Value = .Cells(.Range("B10"), 8).Value
.Range("H9").Value = .Cells(.Range("B10"), 9).Value
End With
End Sub
Module Thêm khách hàng
Tiếp theo để thêm khách hàng và sau khi mình kích vào nút chọn thêm khách hàng thì nút chọn lưu và bỏ qua xuất hiện thì ta viết thêm một Module mới.
Mở đầu sẽ là Sub Them_kh() End Sub và bên trong Sub ta vẫn dùng hàm With And With.
Bên trong hàm With bạn dùng câu lệnh .Shapes("Them khach hang").Visible = msoFalse và .Shapes("Xoa khach hang").Visible = msoFalse hai lệnh này dùng để ẩn cái Button Thêm khách hàng và xóa khách hàng đi. Cho chạy thử chương trình và kết quả.
Tiếp theo ở hai Button lưu và bỏ qua ta cũng sử dụng hai câu lệnh .Shapes("Luu").Visible = msoTrue và .Shapes("Bo qua").Visible = msoTrue
Để xóa dữ liệu ở các ô họ tên, địa chỉ, số phone,... thành ô trắng cho phép ta nhập thông tin khách hàng mới vào để lưu vào bản lưu thông tin khách hàng. Để thực hiện ta gõ .Range("E5,E7,E9,H5,H7,H9").ClearContents trong đó E5,E7,E9,H5,... là những ô mình sẽ xóa đi.
Như vậy mình đã xong chương trình ẩn các Button cũng như xóa các ô thông tin để nhập thông tin mới.
Đoạn code:
Sub Them_kh()
With Sheet1
.Shapes("Them khach hang").Visible = msoFalse
.Shapes("Xoa khach hang").Visible = msoFalse
.Shapes("Luu").Visible = msoTrue
.Shapes("Bo qua").Visible = msoTrue
.Range("E5,E7,E9,H5,H7,H9").ClearContentsEnd With
End Sub
Cập nhật khách hàng vào bản lưu thông tin khách hàng
Để khi ta bấm vào nút chọn lưu thì thông tin về khách hàng sẽ được cập nhật vào bản lưu thông tin khách hàng. Bây giờ ta viết một Module mới để thực hiện công việc này.
Mở đầu vẫn là Sub luu(), bên trong Sub khai báo một biến Dim lastrow As Double tức là mình sẽ tìm hàng cuối cùng để thêm thông tin khách hàng mới vào đó.
Tiếp theo mình vẫn dùng hàm With sheet1 và đừng quên End With.
Trong With mình dùng câu lệnh lastrow = .Range("D10000").End(xlUp).Row và D10000 là mình có thể cho 1000 hay 100 tùy vào số lượng khách hàng tối đa của bạn.
Nếu chưa nhập họ tên thì mình không lưu khách hàng để làm việc này ta dùng lệnh:
If .Range("E5").Value = Empty Then
MsgBox "ban chua nhap ten"
Exit Sub
End If
Khi khách hàng đã có ở bản lưu thông tin khách hàng thi ta sẽ thông báo đã tồn tại ta sẽ dùng hàm if như sau:
If Excel.WorksheetFunction.CountIfs(.Range("D:D"), E5) > 0 Then
MsgBox "da ton tai khach hang nay"
Exit Sub
End If
Tiếp theo nếu cái E5 là ô họ tên đã điền thì ta sẽ cập nhật vào bản lưu thông tin khách hàng, ta dùng lệnh .Cells(lastrow + 1, 4) = .Range("E5").Value ở đây lastrow là ô cuối cùng có thông tin khách hàng ta +1 để thêm thông tin khách hàng mới vào phía sau khách hàng cuối cùng trong bản lưu thông tin khách hàng.
Ta copy lệnh .Cells(lastrow + 1, 4) = .Range("E5").Value thành sáu bản sau đó sửa lại các mục 5,6,7,... và E5,E6,... để trùng với thông tin khách hàng.
.Cells(lastrow + 1, 4) = .Range("E5").Value
.Cells(lastrow + 1, 5) = .Range("E7").Value
.Cells(lastrow + 1, 6) = .Range("E9").Value
.Cells(lastrow + 1, 7) = .Range("H5").Value
.Cells(lastrow + 1, 8) = .Range("H7").Value
.Cells(lastrow + 1, 9) = .Range("H9").Value
Bây giờ bạn nhập thông tin khách hàng sau đó cho chạy thử chương trình và thông tin khách hàng được thêm vào bản lưu thông tin khách hàng.
Đoạn code:
Sub luu()
Dim lastrow As Double
With Sheet1
lastrow = .Range("D10000").End(xlUp).Row
If .Range("E5").Value = Empty Then
MsgBox "ban chua nhap ten"
Exit Sub
End If
If Excel.WorksheetFunction.CountIfs(.Range("D:D"), E5) > 0 Then
MsgBox "da ton tai khach hang nay"
Exit Sub
End If
.Cells(lastrow + 1, 4) = .Range("E5").Value
.Cells(lastrow + 1, 5) = .Range("E7").Value
.Cells(lastrow + 1, 6) = .Range("E9").Value
.Cells(lastrow + 1, 7) = .Range("H5").Value
.Cells(lastrow + 1, 8) = .Range("H7").Value
.Cells(lastrow + 1, 9) = .Range("H9").Value
End With
End Sub
Gán chương trình vào nút chọn
Để gán chương trình mình sẽ cho hiện lại hại nút chọn thêm khách hàng và xóa khách hàng bằng cách quay lại Module Them_kh sửa .Shapes("Them khach hang").Visible = msoFalse và .Shapes("Xoa khach hang").Visible = msoFalse thành .Shapes("Them khach hang").Visible = msoTrue và .Shapes("Xoa khach hang").Visible = msoTrue sau đó cho chạy khi này hai nút chọn hiển thị lên.
Kích chuột phải vào nút chọn Thêm khách hàng chọn Assign Macro -> cửa sổ hiện ra bạn chọn vào tên chương trình Them_kh -> ok
Tiếp theo mình quay lại Module Them_kh sửa thành .Shapes("Them khach hang").Visible = msoFalse và .Shapes("Xoa khach hang").Visible = msoFalse cho chạy hiển thị nút chọn lưu và ẩn đi nút chọn Thêm khách hàng.
Sau đó kích chuột phải vào nút chọn lưu chọn Assign Macro -> kích chọn Luu -> ok
Bây giờ bạn có thể thử nhập tên khách hàng và bấm vào nút lưu.
Khi ta nhập thông tin khách hàng xong và không lưu muốn bỏ qua thì ta viết thêm Module bỏ qua.
Đầu tiên Sub Bo_qua và End Sub tiếp theo trong hàm Sub mình sẽ copy tất cả của hàm With trong Module Them_kh và dán vào đây và chỉnh ngược lại ngõ nào có True chỉnh thành False và có False chỉnh thành True.
Đoạn code:
Sub Bo_qua()
With Sheet1
.Shapes("Them khach hang").Visible = msoTrue
.Shapes("Xoa khach hang").Visible = msoTrue
.Shapes("Luu").Visible = msoFalse
.Shapes("Bo qua").Visible = msoFalse
.Range("E5,E7,E9,H5,H7,H9").ClearContentsEnd With
End Sub
Bây giờ mình gán cho nút chọn bỏ qua kích chuột phải vào nút chọn bỏ qua -> Assign Macro -> chọn Bo_qua -> ok.
Tiếp theo mình viết một Module cho xóa khách hàng đầu tiên vẫn là Sub Xoa_khach_hang() và End Sub trong Sub vẫn là With Sheet1 với End With.
Trước khi xóa khách hàng mình sẽ hiển thị thông báo có chắc chắn muốn xóa hay không ta dùng hàm If MsgBox("Ban co chac chan muon xoa khong?", vbYesNo, "Xoa khach hang") = vbNo Then Exit Sub
Trường hợp 2 nếu bạn tích vào ô không có dữ liệu mà chọn nút xóa khách hàng thì nó cũng không làm gì cả, mình sẽ sử dụng hàm If .Range("B10").Value = "" Then Exit Sub tức là tại ô B10 mà bằng rỗng thì sẽ không thực hiện.
Để xóa ta dùng hàm .Rows(.Range("B10")).EntireRow.Delete
Đoạn code:
Sub xoa_khach_hang()
With Sheet1
If MsgBox("Ban co chac chan muon xoa khong?", vbYesNo, "Xoa khach hang") = vbNo Then Exit Sub
If .Range("B8").Value = "" Then Exit Sub
.Rows(.Range("B8")).EntireRow.DeleteEnd With
End Sub
Tiếp theo ta gán nút chọn xóa khách hàng kích chuột phải vào nút chọn xóa khách hàng -> Assign Macro -> chọn xoa_khach_hang -> ok.
Như vậy bài hướng dẫn cách tạo Form quản lý khách hàng bằng Excel đã hoàn thành chúc bạn thực hành thành công.
Tải Form Quản Lý Khách Hàng Bằng Excel
CHO ĐIỂM BÀI VIẾT NÀY