Tạo mục lục trong Excel

Liên hệ QC

NguyenNgocSon

KEEP WALKING
Tham gia
4/4/08
Bài viết
280
Được thích
833
Nghề nghiệp
Ths. Cầu hầm
Chào các bác, em có 1 vấn đề này muốn dùng VBA để thực hiện :
+ Workbook của em có 5 sheet : Sheet 1 gồm 3 trang, Sheet 2 gồm 2 trang, Sheet 3 gồm 1 trang.
+ Các sheet này được đánh số trang tự động ( Select All Sheets ) từ 1-6
Giờ em muốn viết hàm trả về số thứ tự của trang đầu trong sheet đó
VD: Sheet 1 trả về 1, Sheet 2 trả về 4, Sheet 1 trả về 6
Không biết có cách nào không ạ ?
Em cám ơn !
 
Chào các bác, em có 1 vấn đề này muốn dùng VBA để thực hiện :
+ Workbook của em có 5 sheet : Sheet 1 gồm 3 trang, Sheet 2 gồm 2 trang, Sheet 3 gồm 1 trang.
+ Các sheet này được đánh số trang tự động ( Select All Sheets ) từ 1-6
Giờ em muốn viết hàm trả về số thứ tự của trang đầu trong sheet đó
VD: Sheet 1 trả về 1, Sheet 2 trả về 4, Sheet 1 trả về 6
Không biết có cách nào không ạ ?
Em cám ơn !
Mình nghĩ vầy chắc được chứ:
PHP:
Function tPage() As Long
  Dim cPage As Long, i As Long, iHp As Long, iVp As Long
  Application.Volatile
  tPage = 1
  If ActiveSheet.Index > 1 Then
    For i = 1 To ActiveSheet.Index - 1
      iHp = Sheets(i).HPageBreaks.Count
      iVp = Sheets(i).VPageBreaks.Count
      cPage = iHp * iVp
      tPage = tPage + cPage + 1
    Next
  End If
End Function
Lưu ý: Nếu hàm này được gõ tại các sheet thì khi chuyển đến sheet nào, phải bấm F9 để cập nhật kết quả
 
Upvote 0
Mình nghĩ vầy chắc được chứ:
PHP:
Function tPage() As Long
  Dim cPage As Long, i As Long, iHp As Long, iVp As Long
  Application.Volatile
  tPage = 1
  If ActiveSheet.Index > 1 Then
    For i = 1 To ActiveSheet.Index - 1
      iHp = Sheets(i).HPageBreaks.Count
      iVp = Sheets(i).VPageBreaks.Count
      cPage = iHp * iVp
      tPage = tPage + cPage + 1
    Next
  End If
End Function
Lưu ý: Nếu hàm này được gõ tại các sheet thì khi chuyển đến sheet nào, phải bấm F9 để cập nhật kết quả
Ví dụ em có 3 sheet nếu mà mình dùng hàm tại 1 sheet nào đó thì nó lại cập nhật lại => không đúng ý em lắm. Em muốn nó đánh theo kiểu: Lọc số trang của sheet / tổng số trang mà mình in khi chọn All Sheets
 
Upvote 0
Ví dụ em có 3 sheet nếu mà mình dùng hàm tại 1 sheet nào đó thì nó lại cập nhật lại => không đúng ý em lắm. Em muốn nó đánh theo kiểu: Lọc số trang của sheet / tổng số trang mà mình in khi chọn All Sheets

Vậy thì sửa lại hàm thế này:
PHP:
Function CountPage(ByVal ShName As String) As Long
  Dim iHp As Long, iVp As Long
  Application.Volatile
  iHp = Sheets(ShName).HPageBreaks.Count
  iVp = Sheets(ShName).VPageBreaks.Count
  iHp = IIf(iHp = 0, 1, iHp)
  iVp = IIf(iVp = 0, 1, iVp)
  CountPage = iHp * iVp
End Function
Tại cell E5, gõ công thức =CountPage($C5)
Tại cell F5, gõ công thức =SUM($E$4:$E4)+1
(cái vụ tính số trang này xem ra cũng khó nhai nếu dùng VBA)
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom