Header & Footer

Liên hệ QC

Cá ngừ F1

( ͡° ͜ʖ ͡°)
Thành viên BQT
Moderator
Tham gia
1/1/08
Bài viết
2,579
Được thích
3,723
Donate (Momo)
Donate
Giới tính
Nam
Nghề nghiệp
Quan hệ.. và quan hệ..
Mình đã tham khảo bài viết này http://www.giaiphapexcel.com/forum/showthread.php?382-Header-và-Footer, tuy nhiên không thấy có hướng dẫn làm thế nào để header hay footer tự động tham chiếu như là 1 ô bình thường trong bảng tính.
Mong các thành viên giúp đỡ!

Bạn muốn tham chiếu cái gì đi đâu,

Thường Header footer là cố định - nên yêu cầu này nghe hơi lạ
 
Mình xin giải thích thêm là mình muốn đặt hàm ở header/footer
Ví dụ hàm vlookup (lookupvalue,.....,...) chẳng hạn
Trong đó lookupvalue là một ô nào đó trong bảng tính, ko biết có được ko?
tks!
 
Mình xin giải thích thêm là mình muốn đặt hàm ở header/footer
Ví dụ hàm vlookup (lookupvalue,.....,...) chẳng hạn
Trong đó lookupvalue là một ô nào đó trong bảng tính, ko biết có được ko?
tks!

Muốn lookup thế nào thì bạn cứ đưa file lên đây + mô tả chỉ tiết mới biết có làm được không chứ
Dạng "động đậy" gì đó trong Header, Footer e rằng phải lập trình VBA đấy nha
 
Muốn lookup thế nào thì bạn cứ đưa file lên đây + mô tả chỉ tiết mới biết có làm được không chứ
Dạng "động đậy" gì đó trong Header, Footer e rằng phải lập trình VBA đấy nha
Hjk, thế thì TOI rồi, e ko biết tí j về lập trình...
 
Muốn lookup thế nào thì bạn cứ đưa file lên đây + mô tả chỉ tiết mới biết có làm được không chứ
Dạng "động đậy" gì đó trong Header, Footer e rằng phải lập trình VBA đấy nha
Để cho đơn giản, thì e chỉ muốn ở Header/footer = 1 ô nào đó trong bảng tính thôi ạh
Mong a chỉ dẫn
 
Em có ý làm tương tự như bạn ấy nhưng đơn giản hơn 1 chút
Tại sheet Thong tin chung có thông tin tại A1 là Báo cáo kiểm toán sơ bộ
Em muốn sheet BaoCao có tiêu đề là nội dung ô A1 của Sheet thông tin và khi thay đổi nội dung trong Sheet thông tin tại A1 thì nội dung của tiêu đề trong Header cũng thay đổi theo
 

File đính kèm

Để cho đơn giản, thì e chỉ muốn ở Header/footer = 1 ô nào đó trong bảng tính thôi ạh
Mong a chỉ dẫn
Dù là vậy cũng vẫn phải lập trình thôi

Em có ý làm tương tự như bạn ấy nhưng đơn giản hơn 1 chút
Tại sheet Thong tin chung có thông tin tại A1 là Báo cáo kiểm toán sơ bộ
Em muốn sheet BaoCao có tiêu đề là nội dung ô A1 của Sheet thông tin và khi thay đổi nội dung trong Sheet thông tin tại A1 thì nội dung của tiêu đề trong Header cũng thay đổi theo
Nếu bạn không ngại vụ lập trình thì code thế này:
Mã:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
  With ActiveSheet
    If .Name = "BaoCao" Then .PageSetup.CenterHeader = Sheets("ThongTin").Range("A1").Value
  End With
End Sub
Code đặt trong Thisworkbook nhé
 
Để cho đơn giản, thì e chỉ muốn ở Header/footer = 1 ô nào đó trong bảng tính thôi ạh
Mong a chỉ dẫn

đây là điều bạn cần

Nháy phải vào tabsheet -->VBE xuất hiện --> chọn ThisWorkBook ở bên lề trái, rui dán (paste) code dưới đây vào trang trắng ở bên phải

[GPECODE=vb]
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim wkSht As Worksheet
For Each wkSht In Me.Worksheets
With wkSht.PageSetup
.CenterHeader = Sheet1.Range("A1").Value
.CenterFooter = Sheet1.Range("A2").Value
End With
Next wkSht
End Sub
[/GPECODE]


nội dung Header, Footer, lấy từ giá trị ô A1 A2 nhé
nếu là excel 2007 trở lên thì nhớ save file định dạng *.xlms còn trái lại thì cứ *.xls là được,
và nhớ enable macro

Preview có thể chưa thấy, nhưng in ra máy in là có
 
Ok rồi thầy ạ
Em giờ trình độ mới chỉ biết Copy Code thôi thầy a
Cảm ơn thầy
 
Dù là vậy cũng vẫn phải lập trình thôi


Nếu bạn không ngại vụ lập trình thì code thế này:
Mã:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
  With ActiveSheet
    If .Name = "BaoCao" Then .PageSetup.CenterHeader = Sheets("ThongTin").Range("A1").Value
  End With
End Sub
Code đặt trong Thisworkbook nhé
E cảm ơn anh, em sẽ nghiên cứu thêm về lập trình ạh...
 
E cảm ơn anh, em sẽ nghiên cứu thêm về lập trình ạh...

Cũng không phải vấn đề gì ghê gớm lắm đâu!
Bước đâu chỉ là: HỌC CÁCH XÀI CODE (quá dễ)... giống như học lái xe cũng chẳng phải chuyện khó (đâu ai bắt bạn phải sửa xe mà lo)
 
đây là điều bạn cần

Nháy phải vào tabsheet -->VBE xuất hiện --> chọn ThisWorkBook ở bên lề trái, rui dán (paste) code dưới đây vào trang trắng ở bên phải

[GPECODE=vb]
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim wkSht As Worksheet
For Each wkSht In Me.Worksheets
With wkSht.PageSetup
.CenterHeader = Sheet1.Range("A1").Value
.CenterFooter = Sheet1.Range("A2").Value
End With
Next wkSht
End Sub
[/GPECODE]


nội dung Header, Footer, lấy từ giá trị ô A1 A2 nhé
nếu là excel 2007 trở lên thì nhớ save file định dạng *.xlms còn trái lại thì cứ *.xls là được,
và nhớ enable macro

Preview có thể chưa thấy, nhưng in ra máy in là có
Mình đã thử xài, mà ko được ko hiểu vì sao, đã thay tên sheet và tham chiếu A1 A2 như a bảo
 
Mình đã thử xài, mà ko được ko hiểu vì sao, đã thay tên sheet và tham chiếu A1 A2 như a bảo

Đó là code ví dụ thui,

Còn áp dụng cụ thể bạn phải sửa lại cho hợp lý

ví dụ Sheet1 là tên của đối tượng sheet còn gọi là name of sheet code, cụ thể làm thí nghiệm thế này sẽ hiểu

- tạo 1 file mới excel
- đổi tên sheet 1 - thành "ha ha"
-bấm ALT+F11 để vào VBE
- bạn nhìn sang lề trái sẽ thấy có Book1 có thấy mục Sheet1(ha ha) --> "ha ha" là tên của đối tượng Sheet1 đặt ở ngoài màn hình ô dòng (Worksheet) còn Sheet1 chính là tên đối tượng (tên Sheet code)

Vì thế quay lại file kia của bạn xem có đúng
A1, A2 (ô chứa tiêu đề cho Header footer) thuộc Sheet1 không - nếu là tên sheet-code khác thì phải đổi lại

-------------------------

Dĩ nhiên có thể sử dụng "ha ha" theo cách sửa
.CenterHeader = Sheet1.Range("A1").Value
thành
.CenterHeader = Sheets("ha ha").Range("A1").Value
 
Đó là code ví dụ thui,

Còn áp dụng cụ thể bạn phải sửa lại cho hợp lý

ví dụ Sheet1 là tên của đối tượng sheet còn gọi là name of sheet code, cụ thể làm thí nghiệm thế này sẽ hiểu

- tạo 1 file mới excel
- đổi tên sheet 1 - thành "ha ha"
-bấm ALT+F11 để vào VBE
- bạn nhìn sang lề trái sẽ thấy có Book1 có thấy mục Sheet1(ha ha) --> "ha ha" là tên của đối tượng Sheet1 đặt ở ngoài màn hình ô dòng (Worksheet) còn Sheet1 chính là tên đối tượng (tên Sheet code)

Vì thế quay lại file kia của bạn xem có đúng
A1, A2 (ô chứa tiêu đề cho Header footer) thuộc Sheet1 không - nếu là tên sheet-code khác thì phải đổi lại

-------------------------

Dĩ nhiên có thể sử dụng "ha ha" theo cách sửa
.CenterHeader = Sheet1.Range("A1").Value
thành
.CenterHeader = Sheets("ha ha").Range("A1").Value
Ổn rồi bạn ạh, hqua mình lại soạn cái code ở tên cái sheet mà ko đặt trọng thisworkbook...
Bổ đề: Bây jo mình muốn nâng cao hơn một chút là thay vì lấy ô A1 ở sheet "ha ha" thì tiêu đề header là hàm số có lookup value là ô A1 (ví dụ là sử dụng hàm vlookup...)
 
Ổn rồi bạn ạh, hqua mình lại soạn cái code ở tên cái sheet mà ko đặt trọng thisworkbook...
Bổ đề: Bây jo mình muốn nâng cao hơn một chút là thay vì lấy ô A1 ở sheet "ha ha" thì tiêu đề header là hàm số có lookup value là ô A1 (ví dụ là sử dụng hàm vlookup...)
Thì tại A1 bạn cứ Vlookup như bình thường được giá trị gì thì tiêu đề thay đổi theo thôi,
Mình đã thử Code của thầy Ndu chưa thử Code của VoDoi2x
hay mình chưa hiểu ý bạn
Bạn thử đưa 1 File ví dụ lên mình xem thử
 
Lần chỉnh sửa cuối:
Thì tại A1 bạn cứ Vlookup như bình thường được giá trị gì thì tiêu đề thay đổi theo thôi,
Mình đã thử Code của thầy Ndu chưa thử Code của VoDoi2x
hay mình chưa hiểu ý bạn
Bạn thử đưa 1 File ví dụ lên mình xem thử
Ý mình ở đây là ko cần làm thêm một ô nữa để tham chiếu về ô A1 trên bảng tính mà làm trên header thành một hàm tham chiếu đến ô A1 luôn bạn ạh
 
Đó là code ví dụ thui,

Còn áp dụng cụ thể bạn phải sửa lại cho hợp lý

ví dụ Sheet1 là tên của đối tượng sheet còn gọi là name of sheet code, cụ thể làm thí nghiệm thế này sẽ hiểu

- tạo 1 file mới excel
- đổi tên sheet 1 - thành "ha ha"
-bấm ALT+F11 để vào VBE
- bạn nhìn sang lề trái sẽ thấy có Book1 có thấy mục Sheet1(ha ha) --> "ha ha" là tên của đối tượng Sheet1 đặt ở ngoài màn hình ô dòng (Worksheet) còn Sheet1 chính là tên đối tượng (tên Sheet code)

Vì thế quay lại file kia của bạn xem có đúng
A1, A2 (ô chứa tiêu đề cho Header footer) thuộc Sheet1 không - nếu là tên sheet-code khác thì phải đổi lại

-------------------------

Dĩ nhiên có thể sử dụng "ha ha" theo cách sửa
.CenterHeader = Sheet1.Range("A1").Value
thành
.CenterHeader = Sheets("ha ha").Range("A1").Value
Có một vấn đề nhỏ nữa là sau khi đặt code này vào thì đặt lệnh in hơi lâu... có cách nào khắc phục ko ạh ???
 
Ý mình ở đây là ko cần làm thêm một ô nữa để tham chiếu về ô A1 trên bảng tính mà làm trên header thành một hàm tham chiếu đến ô A1 luôn bạn ạh
Theo mình thì header không thể tính toán và tham chiếu linh động như địa chỉ ô cel
Bạn có thể giải quyết vấn đề trên khi bạn lặp lại tiêu đề đầu trang
Bạn chèn một số dòng vào đầu Sheet các dòng đầu này (dòng 1,2,3..) dùng để nhập tiêu đề hoặc tham chiếu tính toán trắc không vấn đề gì
Để cho nó thành tiêu đề header bạn ..Vào Page Setup\Sheet\Rows to repeat at top\chọn dòng lặp lại (dòng 1,2,3..) \Ok
 
Lần chỉnh sửa cuối:
Web KT

Bài viết mới nhất

Back
Top Bottom