Thiết lập lệnh in tự động trong Excel với VBA

Trong công việc kế toán (hoặc công việc tương tự) cần in ấn chứng từ, sổ sách nhiều. Việc thiết lập trang in một cách tự động là điều hết sức cần thiết cho chúng ta, giúp tiết kiệm thời gian và công sức. Bạn nghĩ sao khi có thể dùng 1 nút lệnh để đưa bảng dữ liệu phức tạp về chuẩn định dạng in như mong muốn? Chúng ta cùng tìm hiểu bài học này nhé.

Ví dụ:

Cho mẫu sổ Nhật ký chung có tới 1000 dòng, trong đó có một số dòng nhất định có chứa dữ liệu như sau:

Mục tiêu: Tạo nút lệnh in, khi bấm vào nút lệnh đó thì sổ NKC sẽ đưa về chuẩn định dạng cuối cùng cần in.

Hướng dẫn cách làm:

Bước 1: Thiết lập vùng in

Trong tab  Page Layout, bấm vào vị trí sau để mở cửa sổ Page Setup:

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:

Trong cửa sổ Page Setup, chúng ta thiết lập vùng in (Print Area) và Dòng lặp lại trong mỗi trang (dòng tiêu đề của bảng = Rows to repeat at top, dòng 5 đến dòng 7)

Việc thiết lập vùng in sẽ giúp cho chúng ta có thể đặt vùng in ở bất kỳ vị trí nào trong Sheet mà vẫn có thể khi đưa lên dạng in sẽ chỉ in các nội dung được chọn, tránh in phải những nội dung thừa không mong muốn.

Đăng kí ngay: lớp học VBA ở Hà Nội

Bước 2: Tạo cột phụ giúp lọc bỏ những dòng thừa trong sổ NKC

Vì việc lập sẵn 1000 dòng để giúp chúng ta có thể nhập bổ sung dữ liệu tùy ý vào sổ, tuy nhiên việc này tạo ra các dòng trống chưa dùng đến => Không sử dụng khi in sổ => Cần phải lọc để ẩn đi trước khi in

Logic lọc như sau: Nếu dòng trong sổ NKC có dữ liệu thì lấy giá trị (ví dụ là giá trị x), nếu không có dữ liệu thì sẽ ra kết quả rỗng

B8=IF(C8=””,””,”x”)

Chúng ta filldown công thức từ ô B8 xuống các dòng tiếp theo đến hết các dòng trong sổ

Còn các dòng ở cuối sổ (Tổng cộng, ngày tháng, người ký…) sẽ luôn luôn có trên sổ, do đó chúng ta có thể đặt sẵn giá trị x vào tất cả những dòng đó

Vùng kẻ viền màu đỏ: Là vùng chứa công thức lọc phát sinh

Vùng kẻ viền màu xanh: Là vùng đặt sẵn giá trị luôn hiện khi lọc

Bước 3: Record macro để lấy câu lệnh VBA cho việc Lọc dữ liệu và Thiết lập chế độ xem trang in

Trong tab Developer, bấm chọn vào chức năng Record macro để ghi lại câu lệnh cho các thao tác:

  • Lọc dữ liệu ở cột B, bỏ dòng trống (bỏ chọn ở giá trị Blanks)

ActiveSheet.Range(“$B$7:$B$1014″).AutoFilter Field:=1, Criteria1:=”<>”

  • Mở chế độ xem trang in (Print Preview)

ActiveWindow.SelectedSheets.PrintPreview

Vì kỹ thuật này chúng ta đã học được ở khóa học VBA101 (hoặc trong các bài viết khác trong blog.hocexcel.online, mình sẽ không nói kỹ thao tác này nữa. Bài học tương tự có ở phần cuối của bài học)

Chúng ta thu được câu lệnh như sau:

Bước 4: Gán Macro vào nút lệnh In

(Nội dung này đã nói kỹ trong các bài học trước, các bạn có thể làm tương tự. Bài học tương tự có ở phần cuối của bài học)

  • Vẽ nút lệnh bằng thao tác Insert / Shape => Vẽ hình chữ nhật
  • Chỉnh sửa định dạng cho nút lệnh sau khi vẽ cho phù hợp
  • Gán Macro vào nút lệnh In với chức năng Assign Macro => Gán Macro1

Bước 5: Tạo nút lệnh Bỏ lọc

Vì thao tác In chúng ta đã sử dụng lệnh lọc => Chúng ta cần thêm 1 thao tác là bỏ lọc để có thể trở về định dạng ban đầu (để có thể nhập dữ liệu tiếp vào bảng)

Trong câu lệnh lọc bỏ giá trị rỗng ở trên

ActiveSheet.Range(“$B$7:$B$1014″).AutoFilter Field:=1, Criteria1:=”<>”

Chúng ta chỉ cần tùy biến 1 chút: Bỏ điều kiện lọc đi, khi đó sẽ được hiểu là Filter cho tất cả các giá trị = Bỏ lọc cho những giá trị cụ thể trước đó. Chúng ta có câu lệnh bỏ lọc như sau

ActiveSheet.Range(“$B$7:$B$1014”).AutoFilter Field:=1

Chúng ta tạo 1 sub riêng và đưa dòng lệnh này vào sub đó.

Gán sub này vào nút lệnh Bỏ lọc

Bước 6: Hoàn thiện thao tác

Khi làm đến bước này, chúng ta hầu như không cần sử dụng việc lọc bằng filter ở cột B nữa, mà việc lọc hoàn toàn tự động thông qua các nút lệnh. Do đó chúng ta có thể ẩn cột B đi không cần sử dụng đến.

Để ẩn cột, chúng ta sử dụng thao tác click chuột phải vào cột đó, chọn Hide

Kết quả cuối cùng của chúng ta là:

Kết luận

Như vậy chỉ cần thêm một chút kỹ thuật về VBA chúng ta đã có thể tối ưu các thao tác với Excel, giúp tăng tính thẩm mỹ và tăng hiệu quả công việc.

VBA ứng dụng rất nhiều trong excel, bạn không cần phải quá giỏi về VBA, chỉ cần một chút thôi cũng đã giúp công việc hàng ngày trở nên dễ dàng hơn và tăng hiệu quả hơn nhiều rồi.

Yêu cầu công việc ban đầu thường là phức tạp, nhưng khi chúng ta biết chia nhỏ vấn đề ra từng bước, sau đó vận dụng các kỹ thuật Excel và VBA sẽ giúp chúng ta đi đến kết quả đó dễ dàng hơn và hiệu quả hơn. Để làm tốt điều đó chúng ta cần phải hiểu rõ yêu cầu công việc, diễn giải yêu cầu đó ra tiếng việt trước, sau đó mới qua từng bước chuyển đổi sang hàm và kỹ thuật VBA. Việc này chính là tư duy giải quyết vấn đề mà chúng ta sẽ học được thông qua các bài học về Excel và VBA. Tư duy giải quyết vấn đề chính là chìa khóa giúp chúng ta giải quyết các vấn đề phức tạp hơn trong thực tế, là yếu tố quyết định thành công trong công việc.

VBA giúp ích rất nhiều trong công việc: giúp bạn tăng tốc trong quá trình xử lý trên Excel, giúp lập các báo cáo tự động, điều khiển các chương trình khác như Word, Power Point, Outlook… giúp biến file Excel của bạn trở thành 1 phần mềm chuyên nghiệp…

Để có thể học VBA một cách đầy đủ, có hệ thống, bạn hãy tham gia khoá học VBA101 – VBA cơ bản dành cho người mới bắt đầu của hệ thống Học Excel Online. Hiện nay hệ thống đang có nhiều ưu đãi khi bạn đăng ký khóa học này. Chi tiết xem tại:


Tác giả: duongquan211287

· · ·

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