Số trang trong VBA (Microsoft Excel)
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 (3135) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: