Code xác định số trang ?

Liên hệ QC

TrungChinhs

Thành viên tích cực
Tham gia
18/2/08
Bài viết
1,475
Được thích
2,469
Nghề nghiệp
Công chức
Chào các bạn! Tôi có một số câu hỏi cần được các bạn giúp đỡ:
Khi trang excel ở chế độ Print preview ta nhìn thấy từng trang và tổng số trang. Vậy muốn xác định được số trang và vị trí con trỏ ở trang số mấy thì code viết như thế nào ?
 
Khi trang excel ở chế độ Print preview ta nhìn thấy từng trang và tổng số trang. Vậy muốn xác định được số trang và vị trí con trỏ ở trang số mấy thì code viết như thế nào ?
Tổng số trang trong 1 sheet: (Xem tại đây)
[highlight=vb]
iPages = ExecuteExcel4Macro("Get.Document(50)")
[/highlight]

Để xác định vị trí con trỏ nằm tại trang số mấy, anh thử code bên dưới xem sao nhé:
[highlight=vb]
Sub PageNumber()
Dim VPC As Integer, HPC As Integer, iPages As Integer
Dim VPB As VPageBreak, HPB As HPageBreak
Dim NumPage As Integer
'-------------------------------------------------------
iPages = ExecuteExcel4Macro("Get.Document(50)")

If ActiveSheet.PageSetup.Order = xlDownThenOver Then
HPC = ActiveSheet.HPageBreaks.Count + 1
VPC = 1
Else
VPC = ActiveSheet.VPageBreaks.Count + 1
HPC = 1
End If

NumPage = 1

For Each VPB In ActiveSheet.VPageBreaks
If VPB.Location.Column > ActiveCell.Column Then Exit For
NumPage = NumPage + HPC
Next VPB

For Each HPB In ActiveSheet.HPageBreaks
If HPB.Location.Row > ActiveCell.Row Then Exit For
NumPage = NumPage + VPC
Next HPB

MsgBox "Sheet nay co " & iPages & " trang va ban dang dung o trang so " & NumPage

End Sub
[/highlight]
 
Lần chỉnh sửa cuối:
Upvote 0
Tổng số trang trong 1 sheet: (Xem tại đây)
[highlight=vb]
iPages = ExecuteExcel4Macro("Get.Document(50)")
[/highlight]

Để xác định vị trí con trỏ nằm tại trang số mấy, anh thử code bên dưới xem sao nhé:
[highlight=vb]
Sub PageNumber()
Dim VPC As Integer, HPC As Integer, iPages As Integer
Dim VPB As VPageBreak, HPB As HPageBreak
Dim NumPage As Integer
'-------------------------------------------------------
iPages = ExecuteExcel4Macro("Get.Document(50)")

If ActiveSheet.PageSetup.Order = xlDownThenOver Then
HPC = ActiveSheet.HPageBreaks.Count + 1
VPC = 1
Else
VPC = ActiveSheet.VPageBreaks.Count + 1
HPC = 1
End If

NumPage = 1

For Each VPB In ActiveSheet.VPageBreaks
If VPB.Location.Column > ActiveCell.Column Then Exit For
NumPage = NumPage + HPC
Next VPB

For Each HPB In ActiveSheet.HPageBreaks
If HPB.Location.Row > ActiveCell.Row Then Exit For
NumPage = NumPage + VPC
Next HPB

MsgBox "Sheet nay co " & iPages & " trang va ban dang dung o trang so " & NumPage

End Sub
[/highlight]

Cảm ơn CaDaFiPhamDuyLong !
1. Code xác định tổng số trang thì OK rồi nhưng nhờ các bạn giải thích giúp ý nghĩa của số 50 (có thể thay số 50 bằng số khác được không ? và những số nào là số hữu dụng)
2. Đoạn code sau bị lỗi ở dòng màu đỏ (tôi đã thử sửa nhưng không được).
3. Nếu tôi muốn chọn một vị trí nào đó của dòng cuối trang thì code viết như thế nào?

Rất mong các bạn giúp tiếp. Thanks!
 
Upvote 0
Cảm ơn CaDaFiPhamDuyLong !
1. Code xác định tổng số trang thì OK rồi nhưng nhờ các bạn giải thích giúp ý nghĩa của số 50 (có thể thay số 50 bằng số khác được không ? và những số nào là số hữu dụng)
- Hàm này liên quan đến Macro4, anh search trên diễn đàn sẽ thấy.

2. Đoạn code sau bị lỗi ở dòng màu đỏ (tôi đã thử sửa nhưng không được).
- Em không thấy lỗi gì hết (đã test trước khi gửi lên mà). Nếu có lỗi gì anh vui lòng cho biết thông báo lỗi của chương trình là gì, chứ thế này không ai biết là lỗi gì cả.

3. Nếu tôi muốn chọn một vị trí nào đó của dòng cuối trang thì code viết như thế nào?
- Anh nói rõ chút được hôn, "vị trí nào đó" là như thế nào? Nếu sheet có nhiều trang thì chọn dòng cuối trang của trang nào!?
 
Upvote 0
@ Cadafi
- Về đoạn code bị lỗi tôi gửi file đính kèm, bạn xem giúp nhé.
- Ví dụ về vị trí cần chọn là ô tại cột B và dòng cuối của trang 2.

Tôi đang chờ bài của bạn
 

File đính kèm

Upvote 0
@ Cadafi
- Về đoạn code bị lỗi tôi gửi file đính kèm, bạn xem giúp nhé.
Trong phần khai báo biến anh khai báo sai dòng này:
Dim VPB As VPageBreak, HPB As HPageBreaks
Khai báo đúng phải là: (nghĩa là HPageBreak không có 's')
PHP:
Dim VPB As VPageBreak, HPB As HPageBreak
Còn muốn chọn cột B và dòng cuối của trang nào thì dùng code sau:
[highlight=vb]
Dim iPage as Integer
iPage =2 '(Trang thứ 2)
ActiveSheet.Cells(ActiveSheet.HPageBreaks(iPage).Location.Row - 1, "B").Select
[/highlight]
Code này viết gọn lại và hoàn chỉnh như sau (dùng thêm inputbox)
[highlight=vb]
Sub Test()
iPage = InputBox("Nhap trang can di chuyen den", "Info", 1)
ActiveSheet.Cells(ActiveSheet.HPageBreaks(iPage).Location.Row - 1, "B").Select
End Sub
[/highlight]
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn Cadafi! tất cả các Code đều OK rồi.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom