Hướng dẫn cách tạo SheetForm Phiếu thu, Phiếu chi trên Excel VBA – Phần 5

Chào các bạn,

Khi  sử dụng VBA trong excel ,  chúng ta thường nghĩ tới việc sử dụng userform để tạo form nhập dữ liệu. Nhưng việc thiết lập userform thường khá phức tạp và sử dụng nhiều code. Đối với những bạn mới tiếp cận về VBA thì việc sử dụng userform gặp nhiều khó khăn.

Trong bài viết này  mình sẽ hướng dẫn các bạn cách sử dụng SheetForm (form tạo trên Sheet) để sử dụng tương tự như userform. Phạm vi bài viết gồm:

Bài 5: Bẫy lỗi trong SheetForm và đánh giá về phương pháp này:

Trong bài 4, chúng ta đã tìm hiểu cách lưu nội  dung từ SheetForm Phiếu thu sang Bảng kê, và câu hỏi ở cuối bài chính là nội dung chúng ta sẽ giải quyết ở bài này:

  1. Làm thế nào để kiểm tra xem phiếu đã được lưu trước đó chưa?
  2. Làm thế nào để yêu cầu  nhập đủ hết nội dung của phiếu thu mới cho lưu phiếu.

Đây chính là những lỗi thường gặp nhất khi sử dụng SheetForm. Vì vậy kỹ năng bẫy những lỗi này là rất cần thiết cho chúng ta trong quá trình làm việc trên VBA.

Tìm hiểu ngay: khóa học lập trình VBA trong excel

Lỗi thứ 1: Không cho lưu trùng phiếu

Để xác định phiếu có trùng không (tương đương với việc  phiếu đã được lưu chưa),  chúng ta sử dụng hàm COUNTIF như sau:

=COUNTIF(Bang_Ke!$B$4:$B$32,Phieu_Thu!$B$4)

Giải thích nội dung hàm:

Dù đã có phần mềm, nhưng kỹ năng Excel vẫn cực kỳ quan trọng với kế toán, bạn đã vững Excel chưa? Hãy để tôi giúp bạn, đăng ký khoá học Excel:

Bang_Ke!$B$4:$B$32  là vùng chứa nội dung Số phiếu trong Bảng kê

Phieu_Thu!$B$4  là số  phiếu trong Phiếu thu

Như vậy hàm COUNTIF sẽ xác định xem số phiếu trong phiếu thu đã xuất hiện trong cột Số phiếu trong Bảng kê chưa.

Kết quả > 0 thì số phiếu đã xuất hiện (đã trùng, đã lưu)

Kết quả = 0 thì số phiếu chưa xuất hiện (chưa lưu)

Trong cửa sổ VBA, với Sub Luu_Phieu_Thu chúng ta viết code như sau:

 

Các bạn có thể thấy phần ghi chú Bẫy lỗi lưu trùng phiếu, trong đó ta thông qua việc sử dụng hàm IF trong VBA để biện luận:

  • If Sheet3.Cells(4, 3).value > 0 then   : nếu kết quả ở sheet 3, ô C4 (là kết quả của hàm COUNTIF đã làm ở trên) lớn hơn 0 thì…
  • Msgbox “Loi: Da luu phieu”   sẽ hiện thông báo lỗi đã lưu phiếu trên màn hình
  • Exit Sub   thoát khỏi sub, dừng lệnh ngay sau khi hiện thông báo lỗi (xuất hiện lỗi này thì dừng lệnh tại đây)
  • Else   nếu không thỏa mãn nội dung trong IF thì sẽ thực  hiện thao tác sau (tức là kết quả của hàm COUNTIF = 0)

Lưu ý là khi mở đầu bằng IF thì kết thúc phải có End IF (vị trí End  If nằm sau dòng msgbox “Hoan thanh”)

Lỗi thứ 2: Kiểm tra nhập đủ nội dung yêu cầu trước khi lưu

Để xác định nội dung yêu cầu đã có dữ  liệu chưa, chúng ta làm như sau:

Tại ô C5 của sheet Điều kiện, dùng hàm:

=IF(OR(Phieu_Thu!B6=””,Phieu_Thu!B8=””,Phieu_Thu!B10=””,Phieu_Thu!B12=””,Phieu_Thu!B14=””),0,1)

Từng đối tượng trong hàm OR sẽ là một nội dung yêu cầu  phải nhập dữ liệu. Nếu bất kỳ yêu cầu nào chưa nhập ( =”” ) thì sẽ cho kết quả = 0, còn nếu tất cả các yêu cầu đều đã nhập thì sẽ cho kết quả = 1

Trong cửa sổ VBA, với Sub Luu_Phieu_Thu chúng ta viết code như sau:

* Lưu ý:

  • Khi viết tiếp 1 hàm IF lồng trong hàm IF trước đó thì chúng ta sử dụng ElseIf chứ không phải là IF
  • Mỗi hàm IF sẽ có mở đầu là IF, kết thúc là End IF. Nếu lồng 1 hàm if khác đồng thời thì sử dụng ElseIF ở giữa.
  • Nếu viết 2 hàm IF riêng biệt thì sẽ dùng 2 lần IF và 2 lần End IF, và viết tách rời khỏi nhau.

Để rèn luyện kỹ năng bẫy lỗi, chúng ta cần luyện tập nhiều để tùy biến theo từng trường hợp.

Đánh giá về việc sử dụng SheetForm

1. Ưu điểm:

  • Dễ sử dụng, trang trí
  • Ít lỗi, dễ viết code, code ngắn
  • Chỉ sử dụng các đối tượng: Sheet, Range, Cell mà không cần quan tâm tới các đối tượng trong UserForm như Label, textbox, combobox, command button… => Giảm đi rất nhiều nội dung cần học về VBA  mà vẫn có hiệu quả tương đương.
  • Với những form lớn, phức tạp, nhiều đối tượng cần nhập dữ liệu thì việc sử dụng sẽ dễ hơn rất nhiều so với UserForm

2. Nhược  điểm:

  • Không phù hợp  với đối tượng muốn làm việc chuyên sâu về VBA
  • Mỗi SheetForm sẽ phải làm trên 1 Sheet => Làm tăng số lượng Sheet, tăng dung lượng File hơn so với UserForm
  • Việc quản lý Điều kiện sẽ phức tạp khi có nhiều SheetForm => cần quản lý điều kiện một cách khoa học
  • Việc bảo vệ Sheet không tốt bằng bảo vệ trong VBA, nên cần lưu ý trong quá trình sử dụng tránh bị sửa, xóa, thay đổi form sheet.

3. Ứng dụng

Ứng dụng trong nhiều trường hợp cần đến làm việc trên Form như:

  • Lập các chứng từ kế toán: Phiếu thu, phiếu chi, phiếu nhập kho, phiếu xuất kho…
  • Lập các form khi thêm mới dữ liệu, ví dụ như:

Cảm ơn các bạn đã theo dõi Seri bài viết này.

Chúc các bạn ứng dụng SheetForm vào công việc được hiệu quả.

Đừng bỏ lỡ: khóa học Excel kế toán với các chuyên gia


Tác giả: duongquan211287

· · ·

Khóa học mới xuất bản