Steve đang tìm cách để xác định, trong macro VBA, số trang mà một trang tính sẽ có, khi được in và số trang mà một ô cụ thể sẽ in. Nhiệm vụ này không hoàn toàn dễ dàng như người ta mong đợi, nhưng nó có thể được thực hiện.

Có vẻ như cách tốt nhất để xử lý điều này là sử dụng hàm Excel 4 đã lỗi thời (nhưng vẫn khả dụng) để xác định tổng số trang được in trong một trang tính. Sau đó, bạn có thể sử dụng bộ sưu tập HPageBreaks và VPageBreaks để tìm ra vị trí ô nằm trong ma trận các trang sẽ được in. Sau đây là ví dụ về macro sử dụng các mục này:

Sub PageInfo()

Dim iPages As Integer     Dim iCol As Integer     Dim iCols As Integer     Dim lRows As Long     Dim lRow As Long     Dim x As Long     Dim y As Long     Dim iPage As Integer

iPages = ExecuteExcel4Macro("Get.Document(50)")



With ActiveSheet         y = ActiveCell.Column         iCols = .VPageBreaks.Count         x = 0         Do             x = x + 1         Loop Until x = iCols _           Or y < .VPageBreaks(x).Location.Column         iCol = x         If y >= .VPageBreaks(x).Location.Column Then             iCol = iCol + 1         End If

y = ActiveCell.Row         lRows = .HPageBreaks.Count         x = 0         Do             x = x + 1         Loop Until x = lRows _           Or y < .HPageBreaks(x).Location.Row         lRow = x         If y >= .HPageBreaks(x).Location.Row Then             lRow = lRow + 1         End If

If .PageSetup.Order = xlDownThenOver Then             iPage = (iCol - 1)  (lRows + 1) + lRow         Else             iPage = (lRow - 1)  (iCols + 1) + iCol         End If     End With     MsgBox "Cell " & ActiveCell.Address & _       " is on " & vbCrLf & "Page " & _       iPage & " of " & iPages & " pages"

End Sub

Một điều bạn cần lưu ý với macro này là bộ sưu tập HPageBreaks và VPageBreaks chỉ được coi là chính xác nếu bạn đang xem trang tính ở Chế độ xem trước Ngắt trang (View | Page Break Preview). Vì vậy, bạn sẽ muốn đảm bảo rằng bạn đang ở chế độ đó trước khi chọn một ô và chạy macro.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (11581) áp dụng cho Microsoft Excel 2007, 2010, 2013 và 2016.