Khi bạn muốn in bảng tính trong Excel, nếu bạn không thiết lập vùng in hoặc thay đổi vùng in tự động thì Excel sẽ tự động in những trang có chứa dữ liệu. Tuy nhiên, bạn chỉ muốn in một vùng trong bảng tính đó, không cần in toàn bộ bảng tính. Để in một vùng nhất định theo mong muốn, chúng ta có thể thực hiện thiết lập vùng in trong Page Setup/Print Area.
Tuy nhiên, đây là một cách chọn vùng in thủ công trong Excel và tốn khá nhiều thời gian. Trong bài viết hôm nay, Gitiho sẽ hướng dẫn bạn cách thiết lập vùng in trong Excel nhanh hơn, tự động hơn bằng VBA. Cùng theo dõi nhé!
Thành thạo VBA Excel nhờ Tuyệt đỉnh VBA
Trước khi tìm hiểu cách thiết lập vùng in tự động bằng VBA, hãy cùng tìm hiểu các đối tượng làm việc trong VBA nhé!
Trong các đối tượng làm việc của trang tính trong VBA, ta có đối tượng liên quan trực tiếp tới việc thiết lập vùng in là PageSetup.PrintArea. Để thiết lập vùng in tại trang tính mà mình mong muốn, bạn hãy đặt tên cho trang tính đó và dùng lệnh sau để làm xuất hiện đối tượng này:
Tên-Sheet.PageSetup.PrintArea =...........
Để gán một vùng vào đối tượng PageSetup.PrintArea, ta cần làm xuất hiện vùng đó đính kèm với địa chỉ của vùng với lệnh như sau:
Tên-trang-tính-chứa-vùng-cần-in.Range("vùng-cần-in").Address
Ví dụ ở đây, ta có vùng cần in là B2:I20, tại sheet 3, ta có:
Sub PrintArea_Test01() 'Thiết lập vùng in từ B2:I20 tại Sheet3
Sheet3.PageSetup.PrintArea = Sheet3.Range("B2:I20").Address
End Sub
Giờ bạn không muốn chỉ in từ B2 tới I20 nữa, mà muốn thiết lập vùng in tự động từ cột B tới cột I, từ dòng 2 đến dòng cuối cùng cứa dữ liệu của cột I thì làm như thế nào? Sử dụng đoạn code sau nhé:
Sub PrintArea_Test02() 'Thiết lập vùng in tới dòng cuối
Sheet1.PageSetup.PrintArea = Sheet3.Range("B2", Sheet3.Range("I65536").End(xlUp)).Address
End Sub
Như vậy, vùng in đã không còn bị giới hạn chỉ tới dòng thứ 20 nữa, mà sẽ mở rộng tới dòng cuối cùng có dữ liệu của cột I, và vùng in bây giờ đã là từ B2 tới dòng cuối cùng có dữ liệu của cột I.
Tương tự như câu lệnh trên, chúng ta có thể sử dụng 1 cách khác để tìm dòng cuối:
Sub PrintArea_Test03() 'Thiết lập vùng in tới dòng cuối
Sheet3.PageSetup.PrintArea = Sheet3.Range("B2", sheet3.Range("I" & rows.count).End(xlUp)).Address
End Sub
Với 2 cách viết này, chúng ta có thể áp dụng tương tự sang các trường hợp khác, chỉ cần thay đổi vùng tọa độ:
Cách thiết lập vùng in theo vùng được chọn
Nếu bạn muốn tự tay chọn vùng in để thiết lập vùng in cho Excel thì có thể làm theo cách sau:
Sub PrintArea_Test04() 'Vùng in theo vùng được chọn
Sheet3.PageSetup.PrintArea = Selection.Address
End Sub
Như vậy, trong bài viết trên, Gitiho đã cùng bạn tìm hiểu cách để thiết lập vùng in hoặc thay đổi vùng in tự động trong Excel bằng VBA, giúp việc in file Excel nhiều cột trở nên thuận tiện và đúng theo mong muốn hơn. Chúng ta có thể thấy, VBA được ứng dụng vào Excel giúp các công việc thủ công trong Excel trở nên nhanh gọn và hiệu quả hơn rất nhiều.
Xem thêm: Cách in lặp lại tiêu đề trong Excel ở tất cả các trang
Khóa học phù hợp với bất kỳ ai đang muốn tìm hiểu lại Excel từ con số 0. Giáo án được Gitiho cùng giảng viên thiết kế phù hợp với công việc thực tế tại doanh nghiệp, bài tập thực hành xuyên suốt khóa kèm đáp án và hướng dẫn giải chi tiết. Tham khảo ngay bên dưới!