Đánh trang tự động trong Excel (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

trithietke

Thành viên mới
Tham gia
9/1/07
Bài viết
5
Được thích
2
Có ai biết cách tạo một macro để chạy số trang tự động trong Excel không ? chứ cách tạo trang thủ công theo tôi rất mất thời gian quá . Mỗi lần đánh số trang thì cứ phải View xem số trang cuối cùng của trang trước đó là trang mấy ??? rồi mới gõ trang tiếp sau ....Cảm ơn diễn đàn
 
Tại sao bạn lại đánh số trang kỳ cục vậy.
Bản chất số trang là một trường trong excel({PAGE}).
Trong excel thông thường để đánh số trang bạn vào page setup/ chọn header and footer/ chọn cutom là ok thôi chứ có gì (để lấy số trang hiện thời dùng &[Pages].

Còn nếu muốn viết macro làm việc này thì bạn dùng record macro
 
rất cảm ơn ý kiến của bạn đã cho ý kiến, về cái hàm page() thi không có vấn đề gì, nhưng khi có biến cố có nhiều sheet trong 1 Workbook thì vấn đề đánh số trang liên tục thì không thể, ý của mình là muốn viết 01 macro để khi chọn thông số nhập cho 1 trang bắt đầu thì nó chạy 1 vòng lặp từ sheet đầu tiên cho đến sheet cuối cùng theo số thứ tự trang được nhập từ bàn phím. Cảm ơn bạn rất nhiều
 
Việc này tôi cũng đã nêu lên 1 lần nhưng các bạn chưa giải quyết triệt để được. Có 2 cách phải in thông qua 1 Lệnh in lập riêng hoặc phải có cách gì bắt được sự kiện excel({PAGE}) trong lúc in 1 chuỗi các trang trên các sheet khác nhau, các vùng khác nhau.
Nếu làm như vậy được thì thật tuyệt
 
trithietke đã viết:
về cái hàm page() thi không có vấn đề gì, nhưng khi có biến cố (hay trường hợp???) có nhiều sheet trong 1 Workbook thì vấn đề đánh số trang liên tục thì không thể, ý của mình là muốn viết 01 macro để khi chọn thông số nhập cho 1 trang bắt đầu thì nó chạy 1 vòng lặp từ sheet đầu tiên cho đến sheet cuối cùng theo số thứ tự trang được nhập từ bàn phím. Cảm ơn bạn rất nhiều
Dear trithietke,
--------------
Yêu cầu của bạn không phải là vấn đề chung của Excel nữa rồi!
Nếu bạn lười không muốn điền bằng tay vào First number page trong Page Setup (Alt+F+U+R) cho từng Sheet thì đành phải lập trình vậy! Bạn tìm hiểu thuộc tính HPageBreaks của Worksheet để biết Worksheet có bao nhiêu trang:
Dim lngPageCount As Long, mySheet As Worksheet
Set mySheet = ActiveSheet
Dim strPageEndRow As String
lngPageCount = mySheet.HPageBreaks.Count
Debug.Print "Sheet '" & mySheet.Name & "' có " & lngPageCount &" trang!"

Bạn tham khảo thêm hai bài viết sau:
1. Tạo ra dòng 'tổng đến hết trang' và 'số mang sang' cho bảng tính nhiều trang
2. Tạo dòng "Tổng cộng cuối trang"
 
Có ai biết cách tạo một macro để chạy số trang tự động trong Excel không ? chứ cách tạo trang thủ công theo tôi rất mất thời gian quá . Mỗi lần đánh số trang thì cứ phải View xem số trang cuối cùng của trang trước đó là trang mấy ??? rồi mới gõ trang tiếp sau ....Cảm ơn diễn đàn

Giải pháp cho vấn đề này như sau :
1. Trước hết, bạn vào Page setup và điều chỉnh đánh số trang tại header/footer
2. Nếu chỉ có 1 sheet thì số trang sẽ bắt đầu từ 1 (mặc định) và kết thúc tại trang cuối.
3. Nếu có nhiều sheet và bạn muốn đánh số liên tục cho tất cả các sheet thì bạn cần làm theo trình tự sau :
- Sắp xếp tất cả các sheet theo đúng thứ tự sau khi in ra.
- Giữ phím Ctrl và click chuột trái lên tất cả các sheet cần in.
- Print Preview, bạn sẽ thấy số trang sẽ hoàn toàn tăng tự động và liên tục giữa các sheet.
- Và bây giờ thì chọn lệnh in thôi !
 
Chào cả nhà,
Em muốn hỏi về cách đánh số trang trong excel. Ví dụ em có 1 file excel có 3 sheet và mỗi sheet có 3 trang. Làm thế nào để đánh số trang từ trang đầu tiên của sheet 1 đến trang cuối cùng của sheet 3 theo thứ tự ?
 
Chào cả nhà,
Em muốn hỏi về cách đánh số trang trong excel. Ví dụ em có 1 file excel có 3 sheet và mỗi sheet có 3 trang. Làm thế nào để đánh số trang từ trang đầu tiên của sheet 1 đến trang cuối cùng của sheet 3 theo thứ tự ?
Tôi có cách chỉ giúp bạn rất đơn giản như sau:
Ở sheet 1 bạn vào View/Header and Footer; chọn Tab Header/Footer ; bạn chọn Custom Header... hoặc Custom Footer tùy thuộc vào bạn muốn cho hiện số trang trên đầu hay ở dưới. Sau đó bạn chọn biểu tượng Insert Page.
Qua sheet 2 bạn cũng làm như vậy, nhưng sau đó bạn gõ vào tiếp theo &Page+(số trang sheet 1) thế là được. Nhớ là phải có dấu Space ở phía sau số trang.
Tương tự qua sheet 3 bạn cũng làm như thế.
Trường hợp của bạn thì bạn gõ ở sheet 2 như sau &[Page]+3
Ở sheet 3 thì bạn gõ như sau &[Page]+6
Nhớ là phải có thêm dấu Space (khoảng trắng) ở phía sau số 3 và số 6 nghen bạn.
Chúc bạn thành công!!!!

Tôi sẽ gởi cho bạn 1 file excel làm như thế.
Xin lỗi bạn, mình không biết cách tải file lên từ forum này.
 
Lần chỉnh sửa cuối:
Làm thế nào đánh thứ tự từng trang trong excel?

Tôi hỏi rõ hơn chút, tôi muốn đánh số thứ tự từng trang trong excel như là 1,2,3....8,9,10...mà ko hiểu vào đâu để tự động. Chẳng nhẽ lại vào từng trang như mấy bác hưỡng dẫn ah? lâu quá nhỉ. Bác nào biết chỉ bảo với nha. Làm ơn viết từng bước rõ ràng chút. Thanks!
 
Bạn vào Page setup -> Header/footer -> Custom footer -> Kích nút Page. Không biết như vậy có đúng ý bạn ko.
 
Chào bạn,

Tôi làm báo giá (báo giá có thể là 1 trang hoặc 10 trang), trong cell B10 tôi muốn ghi số trang/tổng số trang: ví dụ: trang 2/5. Vậy có hàm nào có thể làm được việc này không?

Cám ơn.
 
Chào bạn,

Tôi làm báo giá (báo giá có thể là 1 trang hoặc 10 trang), trong cell B10 tôi muốn ghi số trang/tổng số trang: ví dụ: trang 2/5. Vậy có hàm nào có thể làm được việc này không?

Cám ơn.

Mình chỉ thường đánh trang báo theo kiểu ở footer để báo cho nhà thầu biết họ đang xem trang thứ mấy trên tổng số mấy trang.
Cách làm thì như các anh trên đã bàn.
@$@!^%
Mình thường View > Page Layout > Click chuột vào khung footer > Nhấn thẻ Design > Click Page NumberNumber of page rồi thêm bớt vài chữ cần thiết khác rồi thoát ra thì sẽ được như hình sau:
Office-PageNumberinExcel.jpg


Còn việc ghi số trang/tổng số trang vào 1 ô bất kì trong bảng tính thì hỏi nhờ các sư huynh khác chỉ giáo thêm.

+-+-+-+
 
điền số trang tổng vào cell trong excell

cho mình hỏi mình muốn điền số trang cuối cùng vào một cêl trong excell thì phải làm cách nào. bạn nào biết thì giúp mình với. thanks nhiều.
 
Thử đoạn code này nhé các bạn:
---------

PHP:
Sub DSTrang()
Dim i As Byte, j As Byte
Dim cp As Byte
Dim trangdau As Variant
Dim Sh As Worksheet
Application.ScreenUpdating = False
lai:
trangdau = InputBox(Prompt:="Danh so trang", Title:="Nhap trang dau tien!", Default:="0")
If trangdau <= 0 Or IsNumeric(trangdau) = False Then
    MsgBox "Nhap lai trang dau"
    GoTo lai
End If
For Each Sh In ActiveWorkbook.Worksheets
        Sh.Activate
        With ActiveSheet.PageSetup
                '.LeftFooter = ""
                .CenterFooter = "&P"
                '.RightFooter = ""
                .FirstPageNumber = trangdau
                '.PrintErrors = xlPrintErrorsDisplayed
        End With
        trangdau = trangdau + ExecuteExcel4Macro("Get.Document(50)")
Next
MsgBox "OK"
Application.ScreenUpdating = True
End Sub
-----------
 
Chỉnh sửa lần cuối bởi điều hành viên:
Thử đoạn code này nhé các bạn:
---------
Sub DSTrang()
Dim i As Byte, j As Byte
Dim cp As Byte
Dim trangdau As Variant
Dim Sh As Worksheet
Application.ScreenUpdating = False
lai:
trangdau = InputBox(Prompt:="Danh so trang", Title:="Nhap trang dau tien!", Default:="0")
If trangdau <= 0 Or IsNumeric(trangdau) = False Then
MsgBox "Nhap lai trang dau"
GoTo lai
End If
For Each Sh In ActiveWorkbook.Worksheets
Sh.Activate
With ActiveSheet.PageSetup
'.LeftFooter = ""
.CenterFooter = "&P"
'.RightFooter = ""
.FirstPageNumber = trangdau
'.PrintErrors = xlPrintErrorsDisplayed
End With
trangdau = trangdau + ExecuteExcel4Macro("Get.Document(50)")
Next
MsgBox "OK"
Application.ScreenUpdating = True
End Sub
-----------
hihi. cảm ơn bạn nhiều. mình làm được thành công rồi. chỉ cần 1 cái click chuột là tất cả các sheet sẽ được đánh số trang 1 cách tự động theo trình tự trong 1 workbook.
THANKS, THANKS.....100 lần @$@!^%
Cảm ơn những đóng góp của các bạn
 
Tôi có cách chỉ giúp bạn rất đơn giản như sau:
Ở sheet 1 bạn vào View/Header and Footer; chọn Tab Header/Footer ; bạn chọn Custom Header... hoặc Custom Footer tùy thuộc vào bạn muốn cho hiện số trang trên đầu hay ở dưới. Sau đó bạn chọn biểu tượng Insert Page.
Qua sheet 2 bạn cũng làm như vậy, nhưng sau đó bạn gõ vào tiếp theo &Page+(số trang sheet 1) thế là được. Nhớ là phải có dấu Space ở phía sau số trang.
Tương tự qua sheet 3 bạn cũng làm như thế.
Trường hợp của bạn thì bạn gõ ở sheet 2 như sau &[Page]+3
Ở sheet 3 thì bạn gõ như sau &[Page]+6
Nhớ là phải có thêm dấu Space (khoảng trắng) ở phía sau số 3 và số 6 nghen bạn.
Chúc bạn thành công!!!!

Tôi sẽ gởi cho bạn 1 file excel làm như thế.
Xin lỗi bạn, mình không biết cách tải file lên từ forum này.

Cám ơn bạn nhiều lắm. mày mò hoài giờ đã thông. Mình cũng làm như bạn nhưng không biết đánh dấu cách nên không được. Nhưng tại sao phải đánh dấu cách mình chẳng hiểu? Nhưng biết thế là OK rồi
 
chào các bạn! các bạn cho mình hỏi, vấn đề lập trình trong excell có khó không vậy, mình rất muốn lập trình được một thứ gì đó nhưng mình không có căn bản
 
chào các bạn! các bạn cho mình hỏi, vấn đề lập trình trong excell có khó không vậy, mình rất muốn lập trình được một thứ gì đó nhưng mình không có căn bản
Trong diễn đàn có chuyên mục về lập trình đó bạn. Nói chung vọc mãi rồi cũng biết. Nếu muốn học bài bản thì bạn đăng ký tham gia các lớp học về VBA, trên diễn đàn cũng có đấy. Nếu muốn tự nghiên cứu thì mua sách về tự vọc thôi (gi gỉ gì gi cái gì về excel trên GPE có hết)
 
Mong bạn hướng dẫn chi tiết hơn

Mình đã xem hướng dẫn của bạn và rất muốn áp dụng nhưng không biết làm thế nào để đưa đoạn code này vào máy cả (Mình là dân gà mờ về lập trình mà) vậy mong bạn hướng dẫn cụ thể nhé. Ví dụ mở Excel, vào menu nào... từng bước 1 nhé. Tốt nhất bạn hướng dẫn áp dụng trong office 2010. Cảm ơn trước nhé!
Thử đoạn code này nhé các bạn:
---------

PHP:
Sub DSTrang()
Dim i As Byte, j As Byte
Dim cp As Byte
Dim trangdau As Variant
Dim Sh As Worksheet
Application.ScreenUpdating = False
lai:
trangdau = InputBox(Prompt:="Danh so trang", Title:="Nhap trang dau tien!", Default:="0")
If trangdau <= 0 Or IsNumeric(trangdau) = False Then
    MsgBox "Nhap lai trang dau"
    GoTo lai
End If
For Each Sh In ActiveWorkbook.Worksheets
        Sh.Activate
        With ActiveSheet.PageSetup
                '.LeftFooter = ""
                .CenterFooter = "&P"
                '.RightFooter = ""
                .FirstPageNumber = trangdau
                '.PrintErrors = xlPrintErrorsDisplayed
        End With
        trangdau = trangdau + ExecuteExcel4Macro("Get.Document(50)")
Next
MsgBox "OK"
Application.ScreenUpdating = True
End Sub
-----------
 
Tuyệt! Mình cũng rất cần biết. Bây giờ mới hay!
 
Làm lần lượt như thế này:
1. Excel option --> Trust Center --> Trust Center Settings --> Macro Settings --> Chọn Enable Macro
2. Bấm chuột phải vào sheet tab bất kỳ, chọn View code. Cửa sổ VBA hiện ra
3. Nếu muốn chép code trực tiếp vào file, bạn chọn VBA Project (Tên _ File), rồi vào Menu Insert --> Modul, một modul mới được tạo ra, bạn chép code vào đó --> save.
4. Chạy code: Tắt cửa sổ VBA, ra màn hình excel, bấm Alt + F8, chọn tên thủ tục DStrang rồi bấm Run. Khi input box hiện lên, bạn nhập số trang đầu tiên mà bạn muốn. Rồi bấm Ok.
 
Tôi hỏi rõ hơn chút, tôi muốn đánh số thứ tự từng trang trong excel như là 1,2,3....8,9,10...mà ko hiểu vào đâu để tự động. Chẳng nhẽ lại vào từng trang như mấy bác hưỡng dẫn ah? lâu quá nhỉ. Bác nào biết chỉ bảo với nha. Làm ơn viết từng bước rõ ràng chút. Thanks!
Các bạn đã hướng dẫn vậy là quá rõ rồi việc đánh số trang trong bảng tính hoặc toàn bộ các sheet Ban xem kỷ lại ý họ nói đã làm theo sẽ được. Còn tôi cũng muốn đánh số trang tự động nhưng lại khác tí chút. Tôi làm hoài cũng chưa được, Bạn nào làm được xin chỉ dùm. Là thế này mình làm sổ kế toán trên Excel cuối trang sổ có dòng quy định "sổ này có ... trang được đánh số từ trang số 1 đến trang số:..." Thật ra không phải là mình lười nhưng vì mình muốn nó tự động đếm số trang thì hay hơn vì bảng tính của mình tự động nên số trang cũng tuỳ thuộc vào dử liệu mà nó tìm được. Mình cũng thủ dùng macro ghi lại nhưng chưa được, hiện tại mình dùng công thức để tính nhưng hầu như không chính xác. Mong các bạn tạo giúp cái Macro này với. Xin cám ơn các bạn trước!
 
Lần chỉnh sửa cuối:
Các bạn đã hướng dẫn vậy là quá rõ rồi việc đánh số trang trong bảng tính hoặc toàn bộ các sheet Ban xem kỷ lại ý họ nói đã làm theo sẽ được. Còn tôi cũng muốn đánh số trang tự động nhưng lại khác tí chút. Tôi làm hoài cũng chưa được, Bạn nào làm được xin chỉ dùm. Là thế này mình làm sổ kế toán trên Excel cuối trang sổ có dòng quy định "sổ này có ... trang được đánh số từ trang số 1 đến trang số:..." Thật ra không phải là mình lười nhưng vì mình muốn nó tự động đếm số trang thì hay hơn vì bảng tính của mình tự động nên số trang cũng tuỳ thuộc vào dử liệu mà nó tìm được. Mình cũng thủ dùng macro ghi lại nhưng chưa được, hiện tại mình dùng công thức để tính nhưng hầu như không chính xác. Mong các bạn tạo giúp cái Macro này với. Xin cám ơn các bạn trước!
Trong Page Setup ---> Header/Footer --> Custom Footer: &[Pages] sẽ hiển thị tổng số trang, &[Page] hiển thị số thứ tự trang hiện tại!! Bạn chỉ cần đánh: sổ này có &[Pages] trang được đánh số từ trang số 1 đến trang số: &[Pages]
 
Em có file tài liệu báo giá (Số trang thực tế nhiều hơn trong file đính kèm).
Excel đánh số từ 1 đến n nửa bên trái của tài liệu, rồi tiếp tục đánh số tăng dần từ n+1 của nửa bên phải.
Ví dụ như trong file đính kèm: Hiện tại trang đang được đánh số từ 1 đến 3 (nửa trái), 4-6 (nửa phải).
Và khi in (A4) đem ghép lại để photo thành A3 thì các trang sẽ ghép là: 1 với 4, 2 với 5, 3 với 6.
Làm thế nào để em đánh số được theo kiểu chẵn lẻ: Nửa bên trái là các trang lẻ: 1,3,5 và nửa bên phải là các trang chẵn: 2,4,6 để khi in ra ghép lại sẽ được 1 ghép với 2, 3 với 4 và 5 với 6 ạ?
Xin chân thành cảm ơn mọi người ạ!
 

File đính kèm

Làm lần lượt như thế này:
1. Excel option --> Trust Center --> Trust Center Settings --> Macro Settings --> Chọn Enable Macro
2. Bấm chuột phải vào sheet tab bất kỳ, chọn View code. Cửa sổ VBA hiện ra
3. Nếu muốn chép code trực tiếp vào file, bạn chọn VBA Project (Tên _ File), rồi vào Menu Insert --> Modul, một modul mới được tạo ra, bạn chép code vào đó --> save.
4. Chạy code: Tắt cửa sổ VBA, ra màn hình excel, bấm Alt + F8, chọn tên thủ tục DStrang rồi bấm Run. Khi input box hiện lên, bạn nhập số trang đầu tiên mà bạn muốn. Rồi bấm Ok.


sau cái bước Alt +F8 .tìm ở đâu để thấy tên thủ tuch DStrang dậy bạn , sao mình làm thử mà hok thấy đâu hêt..giúp mình nha
thanks bạn nhiều
 
sau cái bước Alt +F8 .tìm ở đâu để thấy tên thủ tuch DStrang dậy bạn , sao mình làm thử mà hok thấy đâu hêt..giúp mình nha
thanks bạn nhiều
Bạn đọc kỹ và đã hiểu chưa mà đã la làng hỏi lại!
Code ở bài #14 bạn chưa copy code vào Modul thì lấy đâu ra DStrang mà chạy!!
 
Thử đoạn code này nhé các bạn:
---------

PHP:
Sub DSTrang()
Dim i As Byte, j As Byte
Dim cp As Byte
Dim trangdau As Variant
Dim Sh As Worksheet
Application.ScreenUpdating = False
lai:
trangdau = InputBox(Prompt:="Danh so trang", Title:="Nhap trang dau tien!", Default:="0")
If trangdau <= 0 Or IsNumeric(trangdau) = False Then
    MsgBox "Nhap lai trang dau"
    GoTo lai
End If
For Each Sh In ActiveWorkbook.Worksheets
        Sh.Activate
        With ActiveSheet.PageSetup
                '.LeftFooter = ""
                .CenterFooter = "&P"
                '.RightFooter = ""
                .FirstPageNumber = trangdau
                '.PrintErrors = xlPrintErrorsDisplayed
        End With
        trangdau = trangdau + ExecuteExcel4Macro("Get.Document(50)")
Next
MsgBox "OK"
Application.ScreenUpdating = True
End Sub
-----------

Em chạy thử với 1 số file và gặp lỗi số trang của 1 sheet nào đó chỉ = số cuối trang trước (mà ko +1)
Em sửa lại như này và ok:
trangdau = trangdau + ActiveSheet.PageSetup.Pages.Count
Hoặc có thể thay = (ActiveSheet.HpageBreaks.Count+1)* (ActiveSheet.VpageBreaks.Count+1) như ý tưởng của anh Đào Việt Cường ở #5.
Mọi người cùng tham khảo!
 
Rồi trường hợp mình có 1 sheet mà mình mún số thứ tự trang bắt đầu bằng số 2 thì làm sao hả bạn?
 
Các bác lằng nhằng ghê. Vào footer rồi viết cú pháp
 
Lần chỉnh sửa cuối:
Các bác lằng nhằng ghê. Vào footer rồi viết cú pháp &[Page]/[Pages]
[Page] là trang hiện thời
[Pages] là trang cuối
Bạn trả lời cho bài nào?
Nếu trả lời cho bài #1 thì cách của bạn sai bét. Người ta cần marco cơ.
 
Tôi có cách chỉ giúp bạn rất đơn giản như sau:
Ở sheet 1 bạn vào View/Header and Footer; chọn Tab Header/Footer ; bạn chọn Custom Header... hoặc Custom Footer tùy thuộc vào bạn muốn cho hiện số trang trên đầu hay ở dưới. Sau đó bạn chọn biểu tượng Insert Page.
Qua sheet 2 bạn cũng làm như vậy, nhưng sau đó bạn gõ vào tiếp theo &Page+(số trang sheet 1) thế là được. Nhớ là phải có dấu Space ở phía sau số trang.
Tương tự qua sheet 3 bạn cũng làm như thế.
Trường hợp của bạn thì bạn gõ ở sheet 2 như sau &[Page]+3
Ở sheet 3 thì bạn gõ như sau &[Page]+6
Nhớ là phải có thêm dấu Space (khoảng trắng) ở phía sau số 3 và số 6 nghen bạn.
Chúc bạn thành công!!!!

Tôi sẽ gởi cho bạn 1 file excel làm như thế.
Xin lỗi bạn, mình không biết cách tải file lên từ forum này.

(số trang sheet 1) có lấy tự động được không hả bạn
 
Làm lần lượt như thế này:
1. Excel option --> Trust Center --> Trust Center Settings --> Macro Settings --> Chọn Enable Macro
2. Bấm chuột phải vào sheet tab bất kỳ, chọn View code. Cửa sổ VBA hiện ra
3. Nếu muốn chép code trực tiếp vào file, bạn chọn VBA Project (Tên _ File), rồi vào Menu Insert --> Modul, một modul mới được tạo ra, bạn chép code vào đó --> save.
4. Chạy code: Tắt cửa sổ VBA, ra màn hình excel, bấm Alt + F8, chọn tên thủ tục DStrang rồi bấm Run. Khi input box hiện lên, bạn nhập số trang đầu tiên mà bạn muốn. Rồi bấm Ok.
thế nếu muốn đánh từ sheet thứ 2 trở đi thì phải làm thế nào bạn =="
 
Lỗi đánh số trang - Nhờ giúp đỡ

File của em không đánh được số vào chân trang.
Khi đánh số trang tự động theo thứ tự: Custom footer => &[Pages]
thì lại hiện ra dấu ? thay vì các số trang như thông thường.
Nhờ các bác xem giúp em cách khắc phục để có thể đánh số trang tự động, chứ đánh thủ công hàng loạt thì chết.
Cảm ơn các bác
 

File đính kèm

Không hiểu bạn à, Mình tải về và xem thấy bình bình thường mà. Vẫn xem được và đánh số trang bình thường mà
 
Trong Page Setup ---> Header/Footer --> Custom Footer: &[Pages] sẽ hiển thị tổng số trang, &[Page] hiển thị số thứ tự trang hiện tại!! Bạn chỉ cần đánh: sổ này có &[Pages] trang được đánh số từ trang số 1 đến trang số: &[Pages]
Xin hỏi có cách nào đánh: sổ này có ... trang được đánh số từ trang số 1 đến trang số:... ở một ô bất kỳ được không? (Không nằm trong footer)
Xin cảm ơn.
 
Có lẽ là được nếu dùng hàm VBA. Để tôi ngâm cứu!!

Tạm thời nghĩ ra được 1 hàm như thế này:
PHP:
Function Sotrang() As Long
Dim i As Long
Application.ScreenUpdating = False
ActiveSheet.PageSetup.PrintArea = "$A$1:" & ActiveCell.Address
i = ActiveSheet.HPageBreaks.Count
Sotrang = i + 1
ActiveSheet.PageSetup.PrintArea = ""
Application.ScreenUpdating = True
End Function
 
Lần chỉnh sửa cuối:
Có lẽ là được nếu dùng hàm VBA. Để tôi ngâm cứu!!

Tạm thời nghĩ ra được 1 hàm như thế này:
PHP:
Function Sotrang() As Long
Dim i As Long
Application.ScreenUpdating = False
ActiveSheet.PageSetup.PrintArea = "$A$1:" & ActiveCell.Address
i = ActiveSheet.HPageBreaks.Count
Sotrang = i + 1
ActiveSheet.PageSetup.PrintArea = ""
Application.ScreenUpdating = True
End Function
Cảm ơn bạn.Nhưng mà không chạy được bạn à, khi chạy lỗi #NAME?
 
Lần chỉnh sửa cuối:
Thử đoạn code này nhé các bạn:
---------

PHP:
Sub DSTrang()
Dim i As Byte, j As Byte
Dim cp As Byte
Dim trangdau As Variant
Dim Sh As Worksheet
Application.ScreenUpdating = False
lai:
trangdau = InputBox(Prompt:="Danh so trang", Title:="Nhap trang dau tien!", Default:="0")
If trangdau <= 0 Or IsNumeric(trangdau) = False Then
    MsgBox "Nhap lai trang dau"
    GoTo lai
End If
For Each Sh In ActiveWorkbook.Worksheets
        Sh.Activate
        With ActiveSheet.PageSetup
                '.LeftFooter = ""
                .CenterFooter = "&P"
                '.RightFooter = ""
                .FirstPageNumber = trangdau
                '.PrintErrors = xlPrintErrorsDisplayed
        End With
        trangdau = trangdau + ExecuteExcel4Macro("Get.Document(50)")
Next
MsgBox "OK"
Application.ScreenUpdating = True
End Sub
-----------
Anh cho em hỏi một chút a!
file excel của e gồm nhiều sheet, mỗi sheet gồm nhiều trang, giờ em muốn đánh số trang bắt đầu từ trang số 1 trong mỗi sheet thì làm thế nào ạ! em cám ơn Anh!
 
Anh cho em hỏi một chút a!
file excel của e gồm nhiều sheet, mỗi sheet gồm nhiều trang, giờ em muốn đánh số trang bắt đầu từ trang số 1 trong mỗi sheet thì làm thế nào ạ! em cám ơn Anh!
Code thế này bạn! Bỏ cái trangdau đi là được!
PHP:
Sub DSTrang()
Dim i As Byte, j As Byte
Dim cp As Byte
Dim Sh As Worksheet
Application.ScreenUpdating = False
For Each Sh In ActiveWorkbook.Worksheets
        Sh.Activate
        With ActiveSheet.PageSetup
                '.LeftFooter = ""
                .CenterFooter = "&P"
                '.RightFooter = ""
                .FirstPageNumber = 1
                '.PrintErrors = xlPrintErrorsDisplayed
        End With
Next
MsgBox "OK"
Application.ScreenUpdating = True
End Sub
 
Lỗi đánh số trang - Nhờ giúp đỡ

File của em không đánh được số vào chân trang.
Khi đánh số trang tự động theo thứ tự: Custom footer => &[Pages]
thì lại hiện ra dấu ? thay vì các số trang như thông thường.
Nhờ các bác xem giúp em cách khắc phục để có thể đánh số trang tự động, chứ đánh thủ công hàng loạt thì chết.
Cảm ơn các bác
A dùng Office bản tiếng việt hay tiếng A ạ! trước e dùng bản tiếng việt cũng bị vây, chuyển sang bản tiếng Anh thì k bị A nhé!
 
Code thế này bạn! Bỏ cái trangdau đi là được!
PHP:
Sub DSTrang()
Dim i As Byte, j As Byte
Dim cp As Byte
Dim Sh As Worksheet
Application.ScreenUpdating = False
For Each Sh In ActiveWorkbook.Worksheets
        Sh.Activate
        With ActiveSheet.PageSetup
                '.LeftFooter = ""
                .CenterFooter = "&P"
                '.RightFooter = ""
                .FirstPageNumber = 1
                '.PrintErrors = xlPrintErrorsDisplayed
        End With
Next
MsgBox "OK"
Application.ScreenUpdating = True
End Sub
Vâng, E cám ơn Anh nhiều!
Bài đã được tự động gộp:

Code thế này bạn! Bỏ cái trangdau đi là được!
PHP:
Sub DSTrang()
Dim i As Byte, j As Byte
Dim cp As Byte
Dim Sh As Worksheet
Application.ScreenUpdating = False
For Each Sh In ActiveWorkbook.Worksheets
        Sh.Activate
        With ActiveSheet.PageSetup
                '.LeftFooter = ""
                .CenterFooter = "&P"
                '.RightFooter = ""
                .FirstPageNumber = 1
                '.PrintErrors = xlPrintErrorsDisplayed
        End With
Next
MsgBox "OK"
Application.ScreenUpdating = True
End Sub
A cho e hỏi thêm chút bỏ trang đầu đi có nghĩa là trang đầu không đánh số Trang hay sao ạ!
 
A cho e hỏi thêm chút bỏ trang đầu đi có nghĩa là trang đầu không đánh số Trang hay sao ạ!
Bạn thử code này xem sao.
Mã:
Sub DSTrang()
Dim Sh As Worksheet
Application.ScreenUpdating = False
For Each Sh In ActiveWorkbook.Worksheets
        Sh.Activate
        With ActiveSheet.PageSetup
                .CenterFooter = "&P"
                .FirstPageNumber = 0
                .DifferentFirstPageHeaderFooter = True
        End With
Next
MsgBox "OK"
Application.ScreenUpdating = True
End Sub
 
Bạn thử code này xem sao.
Mã:
Sub DSTrang()
Dim Sh As Worksheet
Application.ScreenUpdating = False
For Each Sh In ActiveWorkbook.Worksheets
        Sh.Activate
        With ActiveSheet.PageSetup
                .CenterFooter = "&P"
                .FirstPageNumber = 0
                .DifferentFirstPageHeaderFooter = True
        End With
Next
MsgBox "OK"
Application.ScreenUpdating = True
End Sub
Trong thực tế thì không có trang 0, bác nhỉ?
 
A cho e hỏi thêm chút bỏ trang đầu đi có nghĩa là trang đầu không đánh số Trang hay sao ạ!

trangdau là 1 biến trong code để xác định giá trị của trang đầu tiên. Tôi nói bỏ trangdau là bỏ cái biến này đi, và .FirstPageNumber được mặc định gán giá trị là 1, nghĩa là trong đoạn code .FirstPageNumber=1 thay vì .FirstPageNumber=trangdau. Khi đó các sheet được đánh số trang lại từ đầu, và bắt đầu bằng số 1. Bạn để ý đoạn code gốc cuối vòng lặp for có đoạn trangdau = trangdau + ExecuteExcel4Macro("Get.Document(50)"), nghĩa là các sheet được đánh số liên tiếp, trang đầu tiên của sheet sau bằng trang cuối cùng của sheet trước +1 (hình như code gốc thiếu đoạn +1, hì)
 
Bạn thử code này xem sao.
Mã:
Sub DSTrang()
Dim Sh As Worksheet
Application.ScreenUpdating = False
For Each Sh In ActiveWorkbook.Worksheets
        Sh.Activate
        With ActiveSheet.PageSetup
                .CenterFooter = "&P"
                .FirstPageNumber = 0
                .DifferentFirstPageHeaderFooter = True
        End With
Next
MsgBox "OK"
Application.ScreenUpdating = True
End Sub
Cám ơn anh ạ!
 
cho e hỏi e muốn đanh số thứ tự của số phiếu tự động nhảy theo từng trang thì almf như thế nào ạ, e gà mợ lắm nên muốn anh chị giúp đỡ ak
 

File đính kèm

Chào cả nhà,
Mình giả sử có 10 sheets, mình muốn đánh số thứ tự trang từ sheet 4 đến sheet 8 thôi (sheet 1, 2, 3, 9, 10 bỏ trống) thì code như thế nào ạ? Tư vấn giúp mình nhé.
 
Lần chỉnh sửa cuối:

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

Back
Top Bottom