Hướng dẫn cách thay đổi nội dung header trong Excel theo ý muốn bằng VBA

Khi tìm hiểu về Header, Footer trong Excel, chúng ta thường thấy việc đưa nội dung vào Header, Footer khá cứng nhắc. Muốn thay đổi nội dung này khá tốn thời gian. Đặc biệt nữa là chúng ta không thể sử dụng công thức tham chiếu trong Header, Footer được. Vậy làm thế nào để thay đổi nội dung header trong Excel theo ý muốn một cách nhanh chóng? Hãy tìm hiểu ngay qua bài viết này nhé:

Đặc điểm về Header, Footer trong Excel

Nhắc lại một chút về cách để có thể tạo Header, Footer trong Excel nếu bạn còn chưa biết: Có 3 cách để có thể tạo Header, Footer trong bài viết

Hướng dẫn cách chèn logo vào Header của các trang in trong Excel

Và một số đặc điểm về Header, Footer như sau:

  • Header và Footer đều có 3 phần: Trái – Giữa – Phải tương ứng với các vị trí đặt tiêu đề cho trang in.
  • Có thể nhập trực tiếp  nội dung dưới dạng Text vào Header hay Footer
  • Có thể chèn ảnh/logo và thay đổi kích thước, vị trí của ảnh trong Header, Footer
  • Ở chế độ view thông thường (normal view) sẽ không nhìn thấy Header, Footer trong Excel. Chỉ nhìn thấy trong chế độ Page Layout View
  • Khi chọn Header/Footer sẽ xuất hiện thẻ Header & Footer Tools / Design để thiết kế cho Header / Footer.
  • Không viết được công thức hay tham chiếu tọa độ trong Header, Footer

Với những đặc điểm trên, chúng ta có thể thấy Header và Footer trong Excel có những hạn chế nhất định. Khi muốn thay đổi nội dung trong Header/ Footer thì chúng ta thường phải xóa nội dung cũ đi làm lại nội dung mới (hoặc đánh máy lại đoạn text). Như vậy có thể khiến bạn mất nhiều thời gian, đặc biệt khi phải làm việc với bảng tính yêu cầu Header/ Footer phải thay đổi liên tục.

Cách điều khiển Header, Footer qua VBA

Thật may là chúng ta hoàn toàn có thể khắc phục nhược điểm đã nêu ở trên bằng cách sử dụng VBA trong Excel. Nếu bạn chưa biết VBA trong excel là gì thì có thể tham khảo bài viết sau đây:

Khóa học về lập trình VBA trong Excel

Câu lệnh giúp điều khiển Header/ Footer trong VBA như sau:

Tên Sheet + thuộc tính PageSetup +Vị trí header =….

Khi muốn gán nội dung tại ô A1 trong Sheet1 vào phần bên trái trong Header của Sheet1 chúng ta viết lệnh sau:

Sheet1.PageSetup.LeftHeader = Sheet1.Range(“A1”)

Thứ tự thực hiện có thể mô tả như sau:

  • Bước 1: nhập nội dung ở ô A1 Sheet1 là “Công ty TNHH Học Excel Online”
  • Bước 2: trong VBA, tạo mới 1 Module và tạo mới 1 Sub trong đó, có tên là ChangeHeader có chứa câu lệnh như trên
  • Bước 3: bấm nút RUN (hình tam giác màu xanh – phím tắt F5)
  • Bước 4: kiểm tra kết quả tại phần bên trái Header trong Sheet1

Rất đơn giản phải không nào. Trong đối tượng PageSetup có một số thuộc tính về Header/ Footer như sau:

  • HeaderMargin / Footer Margin: lề của Header / Footer
  • LeftHeader / LeftFooter: phần nội dung (text)  tại vị trí bên trái của Header / Footer
  • LeftHeaderPicture / LeftFooterPicture: phần hình ảnh tại vị trí bên trái của Header / Footer
  • CenterHeader / CenterFooter:  phần nội dung (text)  tại vị trí ở giữa của Header / Footer
  • CenterHeaderPicture / CenterFooterPicture: phần hình ảnh tại vị trí ở giữa của Header / Footer
  • RightHeader / RightFooter: phần nội dung (text)  tại vị trí bên phải của Header / Footer
  • RightHeaderPicture / RightFooterPicture: phần hình ảnh tại vị trí bên phải của Header / Footer

Như vậy chúng ta có thể quản lý chi tiết cho 2 loại đối tượng là Text và Picture có trong cả 3 phần Left-Center-Right của Header hoặc Footer.

Tùy vào từng mục đích mà chúng ta có thể lựa chọn từng đối tượng phù hợp để làm việc.

Thiết lập sự kiện liên quan tới Header/ Footer trước khi in

Header / Footer thường được sử dụng liên quan tới in ấn trong Excel. Vì vậy khi lập trình VBA cho đối tượng này, chúng ta thường làm việc liên quan tới sự kiện BeforePrint (trước khi lệnh in được thực hiện).

Ý nghĩa của nó là khi chúng ta thực hiện lệnh in (Print) trong Excel thì trước khi máy in hoạt động, VBA sẽ can thiệp để làm một điều gì đó mà chúng ta lập trình từ trước.

Ví dụ:

Bạn muốn trước khi in tại Sheet1 thì phần bên trái của Header  trong Sheet đó sẽ được lấy nội dung theo vị trí ô A1 (vẫn trong Sheet1)

Sự kiện được thiết lập như sau:

  • Trong cửa sổ Project, chọn tới ThisWorkbook (vì sự kiện in liên quan tới toàn bộ workbook, không phải chỉ trong 1 sheet cụ thể nào)
  • Phần đối tượng chọn Workbook, chọn tiếp sự kiện liên quan tới Workbook là BeforePrint
  • Trong Private Sub Workbook_BeforePrint vừa tạo, nhập đoạn code gán nội dung Header theo nội dung tại ô A1 (chú ý tên Sheet trước các đối tượng)

Như vậy là sự kiện đã được thiết lập. Bây giờ bạn có thể kiểm tra lại khi thay đổi nội dung ở ô A1 trong Sheet1, sau đó bấm lệnh Print để xem Header có được cập nhật không nhé.

Chúc các bạn thành công!

Tham khảo:

Tìm hiểu về ý nghĩa và cách dùng các sự kiện trong VBA Excel

Bắt sự kiện worksheet selection change trong VBA

Kích hoạt macro VBA khi một giá trị trong ô thay đổi


Tác giả: dtnguyen (Nguyễn Đức Thanh)

@ Học Excel Online | DTNguyen.business
· · ·

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