fbpx

Excel VBA: Tạo SheetForm Phiếu Thu, Phiếu Chi – Phần 3

Chia sẻ bài viết này:
  •  
  •  
  •  
  •  
  •  
  •  
  •   
  •   

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 3: Viết code VBA cho thao tác Làm mới SheetForm

Tạo nút lệnh

Chúng ta vẽ 1 nút lệnh có tên Làm mới trong sheet Phieu_thu (để tìm hiểu chi tiết cách vẽ vui lòng xem ở bài 2)

Xây dựng quy trình

Xây dựng quy trình chính là việc diễn giải toàn bộ diễn biến của câu lệnh bằng lời.

Cụ thể:

  • Đối tượng số phiếu: Khi làm mới sẽ cập nhật số phiếu tự động
  • Các đối tượng khác: Khi làm mới sẽ làm trống dữ liệu tại các nội dung đó.

Lập số phiếu tự động

Đây là một nội dung phức tạp. Phức tạp ngay cả trong SheetForm hay UserForm. Bởi vì nó phụ thuộc rất nhiều yếu tố, và tính biện động cao:

  • Phụ thuộc dạng số phiếu: Ví dụ dạng PT01 hay PT001 là 1 dạng, nhưng PT01/2017 lại là dạng khác. Khác ở chỗ phải biện luận thêm giá trị số năm lập phiếu một cách tự động.
  • Phụ thuộc cấu trúc dữ liệu lưu trong Bảng kê: Nếu bảng kê lưu dưới dạng Mỗi phiếu 1 dòng thì đếm thứ tự liên tục  một kiểu (thường là tìm giá trị số phiếu lớn nhất đang lưu rồi cộng thêm 1), nhưng nếu lưu dưới dạng 1 phiếu có nhiều dòng thì phải đếm lần xuất hiện của mỗi phiếu chỉ duy nhất 1 lần…

Trong từng mục  đích cụ thể chúng ta sẽ có cách biện luận và xây dựng số phiếu tự động phù hợp.

Trong phạm vi bài viết này, mình xin đưa ra dạng đơn giản nhất là dạng PT01 và mỗi phiếu lưu 1 dòng trong bảng kê (vì seri bài viết thuộc mức độ cơ bản và đơn giản nhất giúp các bạn mới học VBA hiểu, và tập trung vào VBA)

Công thức tính số phiếu tự động:

– Tính logic:

  • Bắt đầu bằng ký tự “PT” tức là Phiếu thu
  • Số thứ tự phiếu được đếm bằng Tổng số phiếu đã lưu trong bảng kê và cộng thêm 1 giá trị.

– Hàm, công thức Excel được sử dụng

=”PT”&TEXT(COUNTIF(Bang_Ke!$A$4:$A$100,”Thu”)+1,”0#”)

Bang_Ke!$A$4:$A$100 là vùng Loại phiếu

COUNTIF(Bang_Ke!$A$4:$A$100,”Thu”) là chỉ đếm những dòng phiếu có Loại là Thu

TEXT(COUNTIF(Bang_Ke!$A$4:$A$100,”Thu”)+1,”0#”) là tổng số phiếu có loại là thu sẽ cộng thêm 1 đơn vị, và được viết dưới dạng số có chữ số o ở đầu nếu số đó chỉ có 1 chữ số.

=> Tạo 1 sheet là Sheet “Điều kiện”, đặt công thức tính số phiếu tự động vào ô bất kỳ trong sheet đó, ví dụ ô C3

Đừng bỏ lỡ: Lớp học Excel ở Hà Nội cùng các chuyên gia

Viết code VBA

Mở cửa sổ VBA (phím tắt Alt + F11), tạo 1 Sub có tên là Lam_Moi_Phieu_Thu

Nội dung của Sub được  biểu diễn như sau

Sub Lam_Moi_Phieu_Thu()
‘Thuc hien tai sheet Phieu_Thu
With Sheet2
‘Lay so phieu moi
.Cells(4, 2).Value = Sheet3.Cells(3, 3).Value
‘Xoa du lieu o nhung noi dung khac
.Range(“B6:B14”).ClearContents
End With
End Sub

*** Nội dung code được hiểu như sau:

  • Vì thực hiện tại sheet Phiếu thu, vì vậy ta có thể sử dụng With Sheet 2 …. End With để giới hạn nội dung trong sheet2, và không cần biểu diễn quá nhiều tên Sheet2 trong câu lệnh.
  • .Cells(4,2).value      là giá trị tại ô có tọa độ hàng 4, cột 2 (ô B4) trong sheet Phiếu thu
  • Sheet3.cells(3,3).value      là giá trị tại ô có tọa độ hàng 3, cột 3 (ô C3) trong sheet3 (sheet Điều kiện), đây chính là ô có công thức số phiếu tự động
  • .Cells(4, 2).Value = Sheet3.Cells(3, 3).Value       được  hiểu là lấy giá trị của ô số phiếu tự động trong sheet Điều kiện đưa vào giá trị ô Số phiếu trong sheet phiếu thu
  • .Range(“B6:B14”).ClearContents      là xóa dữ liệu trong vùng từ B6 đến B14 trong sheet Phiếu thu (vùng này tương ứng với nội dung nhập dữ liệu của các chỉ tiêu còn lại).

Gán lệnh Macro vào nút lệnh

Chọn chức năng Assign Macro cho nút lệnh Làm mới, chọn macro Lam_Moi_Phieu_Thu

Như vậy chúng ta đã hoàn thành xong thao tác tạo nút lệnh làm mới phiếu thu.

Xem ngay: học Excel kế toán ở đâu?

Cảm ơn các bạn đã chú ý theo dõi.

Câu hỏi sau bài học

Tại sao không làm thẳng công thức vào ô B4 trong Phiếu thu mà phải thông qua sheet DK ở ô C3?

 


Chia sẻ bài viết này:
  •  
  •  
  •  
  •  
  •  
  •  
  •   
  •