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.

>> Xem bài trước: Cách Tạo Form Quản Lý Khách Hàng Bằng Excel (Phần 1)

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.

Mở 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ắt đầu viết chương trình

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.

hàm xuất hiện thông tin 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

kết quả hàm hiển thị thông tin khách hàng

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ả.

ẩn button

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").ClearContents

End With
End Sub

hàm xóa thông tin khách hàng

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.

chương trình thêm khách hàng

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.

chạy chương trình thêm 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.

hiển thị nút chọ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

gán macro

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 

gán macro lưu

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.

test chương trình 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").ClearContents

End 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.

gán macro bỏ qua

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.Delete

End With
End Sub

hàm xóa khách hàng

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.

gán macro xóa khách hàng

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.


 

CHO ĐIỂM BÀI VIẾT NÀY

vote data

Bình luận bài viết

  • Bởi: thảo 3 tuần trước

    sao mình làm đến bước gán assign macro thi bị ghi là code break,

  • Bởi: HO NGUYEN 2 tháng trước

    Cho mình xin file về tham khảo được không

0989.717.035
ZALO CHAT
TOP