Tạo mục lục tự động trong excel? (1 người xem)

  • Thread starter Thread starter LikeIt
  • Ngày gửi Ngày gửi
Liên hệ QC

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

LikeIt

Thành viên tiêu biểu
Tham gia
16/6/06
Bài viết
415
Được thích
254
Nghề nghiệp
Others
Kính gửi các anh chị,
Em đọc trên một báo nào đó (thực sự ko nhớ) có nói về một VD trong excel là tạo mục lục tự động trong một sheet, để di chuyển các sheet trong bảng tính cho dễ dàng, nhưng khi thực hiện theo chỉ dẫn thì ko đc, ko biết em hiểu có đúng ko? vì em nghĩ khi tạo đc mục lục tự động thì khi thêm hoặc bỏ tên một sheet nào trong file này thì nó sẽ hiện lên trên sheet MUCLUC? mong các anh chị biết về VBA chỉ giúp. Em xin post VD của em làm và nội dung bài báo đã sưu tầm.tks - NHT
Tạo mục lục các Sheet trong Excel 2003


Đây là một thủ thuật mà mình đánh giá là...4 sao cho tính tiện dụng...

Vấn đề:
Khi làm việc với một tập tin Excel (Worbook) có nhiều worksheet (bảng tính), các bạn sẽ gặp nhiều khó khăn khi di chuyển giữa các bảng tính này.

Giải pháp:
Chúng ta sẽ tạo ra một Sheet mới với tên là MụcLục. Sau đó thêm một đoạn code vào Sheet này để tạo mục lục tự động.
{ad_200x200_right}
Các bước thực hiện:
1. Trở về Sheet đầu tiên. Vào Insert > Worksheet. Đặt tên của Sheet này lại thành MụcLục hay để nguyên tùy thích.
2. Right-click lên thẻ của Sheet này chọn View Code.
3. Copy tất cả đoạn Code này vào:
PHP:
Private Sub Worksheet_Activate() 
Dim wSheet As Worksheet 
Dim M As Long 
M = 1 
    With Me 
        .Columns(1).ClearContents 
        .Cells(1, 1) = "INDEX" 
        .Cells(1, 1).Name = "Index" 
    End With 
    
    For Each wSheet In Worksheets 
        If wSheet.Name <> Me.Name Then 
        M = M + 1 
        With wSheet 
            .Range("H1").Name = "Start" & wSheet.Index 
            .Hyperlinks.Add Anchor:=.Range("H1"), Address:="", SubAddress:="Index", TextToDisplay:="Back to Index" 
        End With 
            Me.Hyperlinks.Add Anchor:=Me.Cells(M, 1), Address:="", SubAddress:="Start" & wSheet.Index, TextToDisplay:=wSheet.Name 
        End If 
        Next wSheet 
End Sub
4. Nhấn Alt + Q và Save lại.
5. Từ Excel, vào Tool > Macro > Security. Trong hộp thoại này, chọn mức Low. Vì trong file Excel của bạn có dùng Macro, nên đôi khi mức Macro security ở mức high, đoạn lệnh của bạn sẽ không có tác dụng. Nếu bạn chọn Mediup, bạn sẽ được nhắc là chạy macro không. Trong trường hợp này, bạn chọn Enable Macro để thấy tác dụng.
5. Nhấn Ctrl + W để đóng lại Workbook và mở lại Workbook này.
Đến đây, khi nhấp vào Sheet có tên là MụcLục, bạn sẽ thấy danh sách các bảng tính hiện ra. Nhấp vào Sheet nào mà bạn muốn di chuyển nhanh đến để làm việc....
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Vì em cho code vào This Worbook nên nó ko chạy là phải rồi...
Hướng dẩn có đoạn:
2. Right-click lên thẻ của Sheet này chọn View Code.
3. Copy tất cả đoạn Code này vào:
Vậy em cắt đoạn code ấy và cho nó vào Sheet Index đi, nó sẽ chạy ngay lập tức

He... he...
Món này ko cần dùng VBA vẩn làm dc... Dùng công thức quá dể luôn...
Dựa trên nền file GetSheetName (May quá, nghĩ chơi chơi mà giờ có cái để ứng dụng đây)
Xem file... Sheet Index sẽ tự động cập nhật bất kể ta đổi tên sheet, xóa sheet hay thêm sheet gì nó cũng chơi tuốt.... Tất cả chỉ dùng chức năng Hyperlink và các name trong Define Name... 1 Name Link duy nhất nó có thể hiểu dc bạn đang muốn link đến Sheet nào... he...he.. 1 phát 1 cho tất cả...
ANH TUẤN
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Vâng em thấy cái này rất tiện để tự update thành một cái index sau này truy cập rất nhanh.
 
Upvote 0
Kết cục nó hiện lên 1 cái chữ back to index xóa mất mấy dòng dữ liệu của các sheet kia .Ecc chẳng ăn thua lắm
 
Upvote 0
Kết cục nó hiện lên 1 cái chữ back to index xóa mất mấy dòng dữ liệu của các sheet kia .Ecc chẳng ăn thua lắm
Trời... Tất nhiên là tùy từng dử liệu cụ thể chứ... Code hay công thức cùng làm sao lường trước dc cell nào trên bảng tính của bạn là đang trống, đúng ko? Chính vì lẽ đó là trước khi dùng các bạn nên chạy thử trước trên file mới... Nếu thấy có vấn đề gì ko ổn thì bấm Alt + F11, vào cửa sồ VBE để chỉnh lại cho phù hợp... Tôi ngu về VBA mà tôi còn biết phải chỉnh chổ nào, chẳng lẽ bạn ko làm dc? Hi.. hi..
ANH TUẤN
 
Upvote 0
AnhTuan1066 giải thích giùm em NAME : NoSs = Get.WorkBook(4). Xin cảm ơn.
 
Upvote 0
AnhTuan1066 giải thích giùm em NAME : NoSs = Get.WorkBook(4). Xin cảm ơn.
Name ấy dùng để lấy số lượng sheet có trong Workbook... Đây là các hàm thuộc macro 4, chỉ có thể gán vào name để xài chứ ko thể gõ trực tiếp vào cell
Bạn tham khảo thêm về hàm macro 4 tại đây:
http://www.giaiphapexcel.com/forum/forumdisplay.php?s=&daysprune=-1&f=33
và đây:
http://www.giaiphapexcel.com/forum/showthread.php?t=7613
ANH TUẤN
 
Upvote 0
Name ấy dùng để lấy số lượng sheet có trong Workbook... Đây là các hàm thuộc macro 4, chỉ có thể gán vào name để xài chứ ko thể gõ trực tiếp vào cell
Bạn tham khảo thêm về hàm macro 4 tại đây:
http://www.giaiphapexcel.com/forum/forumdisplay.php?s=&daysprune=-1&f=33
và đây:
http://www.giaiphapexcel.com/forum/showthread.php?t=7613
ANH TUẤN

thêm sheet thì INDEX của nó bị hỏng bác ạh
 
Upvote 0
thêm sheet thì INDEX của nó bị hỏng bác ạh
Rất có thể... đó là do tôi sơ xuất trong công thức tại name NoSs...
Name củ:
Mã:
NoSs =GET.WORKBOOK(4)
Sửa lại thành
Mã:
NoSs =GET.WORKBOOK(ROW(INDIRECT("A4")))
Tôi đã post lại file, bạn tải về xem thử.... Chú ý nếu thêm sheet mới thì khi quay lại sheet INDEX bạn bấm F9 để cập nhật nhé
ANH TUẤN
 
Upvote 0
xin lỗi cho em hỏi 1 câu, em có 1 sheet là data, muốn chọn chọn sheet này thì code thế nào, vì ko dùng được worksheets("data").select
 
Upvote 0
Xin chào mọi người!
Tôi đã đọc phần tạo mục lục trong excel và tôi đã làm theo rất tốt, hiện tại trong các sheet đều có một cột lưu về số tiền nợ của người đó, số tiền đó không cố định mà nó được thay đổi theo ngày giờ tôi muốn lấy số tiền nợ cuối cùng của người đó điền vào một cột tổng tiền trong sheet "Mục lục", tương ứng với mỗi người là số tiền nợ của người đó
mọi người giúp tôi với
 
Upvote 0
Theo mình thì dùng cách của bạn Tuấn hay hơn vì dùng cách này thì mỗi lần mở, máy sẽ tạo lại thư mục nên với những File nhiều Sheet và bảng tính có nhiều dữ liệu thì lúc mở rất chậm. Để khắc phục "tạm thời" thì sau khi tạo xong mục lục bạn nên xoá đoạn code này hoặc đánh dấu nháy (') vào đầu các dòng lệnh để tạm thời loại bỏ nó khi nào cần dùng lại thì xoá các dấu nháy đi.
Bạn nào có cách khác chuyên nghiệp ?
 
Lần chỉnh sửa cuối:
Upvote 0
Nguyễn Hương Thơm; Tạo mục lục các Sheet trong Excel 2003 ... Đây là một thủ thuật mà mình đánh giá là...4 sao cho tính tiện dụng... Theo mình thì dùng cách của bạn Tuấn hay hơn vì dùng cách này thì mỗi lần mở đã viết:

Xóa code đi làm gì hả bạn ??? Nó chỉ chạy code đó với sự kiện Workbook_Active, hoặc nếu muốn thì Workbook_Open, hoặc 1 điều kiện nào đó.
VBA thì có đặc điểm là lin h hoạt, vì vậy bạn có thể tùy biến cho các trường hợp của mình :
VD : Khi THÊM/XÓA sheet thì Code này tự động chạy lại, Khi thay đổi tên Sheet thì các chữ trong mục lục sẽ thay đổi theo . . . . .

Mình chả hiểu từ chuyên nghiệp ở đây là gì ???

Thân!
 
Upvote 0
Xóa code đi làm gì hả bạn ??? Nó chỉ chạy code đó với sự kiện Workbook_Active, hoặc nếu muốn thì Workbook_Open, hoặc 1 điều kiện nào đó.
VBA thì có đặc điểm là lin h hoạt, vì vậy bạn có thể tùy biến cho các trường hợp của mình :
VD : Khi THÊM/XÓA sheet thì Code này tự động chạy lại, Khi thay đổi tên Sheet thì các chữ trong mục lục sẽ thay đổi theo . . . . .

Mình chả hiểu từ chuyên nghiệp ở đây là gì ???

Thân!

Cảm ơn Okebab từ chuyên nghiệp Tôi hỏi chính là "Nó chỉ chạy code đó với sự kiện Workbook_Active, hoặc nếu muốn thì Workbook_Open, hoặc 1 điều kiện nào đó...". Mình không rành món code này lắm nên chỉ biết xử lý thủ công (không chuyên nghiệp) như vậy.
 
Upvote 0
anhtuan1066 oi! anh giúp e cách làm chỉ mục trong ecxel với, e cũng copy code của các bạn làm nhưng sao o được. A có thể cho e công thức hay code nào đó o? cám ơn a nhiều
 
Upvote 0
anhtuan1066 oi! anh giúp e cách làm chỉ mục trong ecxel với, e cũng copy code của các bạn làm nhưng sao o được. A có thể cho e công thức hay code nào đó o? cám ơn a nhiều
File của tôi tại bài số #2 dùng công thức thường thôi, chẳng có code gì cả
Bạn mở file của tôi lên, xong bấm Ctrl + F3 sẽ thấy công thức nằm trong đó
 
Upvote 0
anhtuan1066 cho mình hỏi cái
Tại sao khi mình Define name như bạn mà lại không được vậy.
1. Không hiện ra ten sheet
2. Không hiện Hypelink

Bạn có thể chỉ cho mình cụ thể không
tks
 
Upvote 0
File này sao không thấy code đâu nhỉ.
Còn cái code này:
PHP Code:

Private Sub Worksheet_Activate()
Dim wSheet As Worksheet
Dim M As Long
M = 1
With Me
.Columns(1).ClearContents
.Cells(1, 1) = "INDEX"
.Cells(1, 1).Name = "Index"
End With

For Each wSheet In Worksheets
If wSheet.Name <> Me.Name Then
M = M + 1
With wSheet
.Range("H1").Name = "Start" & wSheet.Index
.Hyperlinks.Add Anchor:=.Range("H1"), Address:="", SubAddress:="Index", TextToDisplay:="Back to Index"
End With
Me.Hyperlinks.Add Anchor:=Me.Cells(M, 1), Address:="", SubAddress:="Start" & wSheet.Index, TextToDisplay:=wSheet.Name
End If
Next wSheet
End Sub
Sao nó chạy rất chậm. khi back lại index.
Có cách nào cho nó chạy nhanh hơn được không các pac ơi.
 
Upvote 0
Bạn thử cái này xem (sửa lại cho gọn và dễ xem).

PHP:
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
Dim sh As Worksheet, n As Long
n = 1
    With Me
        .Columns(1).ClearContents
        .[a1] = "INDEX"
        .[a1].Name = "Index"
    End With
    For Each sh In Worksheets
        If sh.Name <> Me.Name Then
            n = n + 1
            With sh
                .[a1].Name = "Start" & sh.Index
                .Hyperlinks.Add .[a1], "", "Index"
            End With
            Me.Hyperlinks.Add Me.Cells(n, 1), "", "Start" & sh.Index, sh.Name
        End If
    Next
End Sub
 

File đính kèm

Upvote 0
Bạn thử cái này xem (sửa lại cho gọn và dễ xem).

PHP:
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
Dim sh As Worksheet, n As Long
n = 1
    With Me
        .Columns(1).ClearContents
        .[a1] = "INDEX"
        .[a1].Name = "Index"
    End With
    For Each sh In Worksheets
        If sh.Name <> Me.Name Then
            n = n + 1
            With sh
                .[a1].Name = "Start" & sh.Index
                .Hyperlinks.Add .[a1], "", "Index"
            End With
            Me.Hyperlinks.Add Me.Cells(n, 1), "", "Start" & sh.Index, sh.Name
        End If
    Next
End Sub
Nhân tiện nghiên cứu về Hyperlink, em có code này hơi bị độc đáo đây: Add Hyperlink cho tất cả các sheet mà không cần đến vòng lập nào
Chúng ta thực hiện như sau:
1> Tạo 1 file gồm nhiều sheet, trong đó có 1 sheet tên là Index (bắt buộc)
2> Chèn code này vào 1 Module
PHP:
Function GetSh()
  Dim Temp()
  ActiveWorkbook.Names.Add String(240, "z"), "=SUBSTITUTE(GET.WORKBOOK(1),""[""&GET.WORKBOOK(16)&""]"","""")"
  Temp = Evaluate("Transpose(" & String(240, "z") & ")")
  Temp = WorksheetFunction.Transpose(Temp)
  ActiveWorkbook.Names(String(240, "z")).Delete
  GetSh = Temp
End Function
PHP:
Sub Auto_Open()
  Sheets("Index").Activate
  Range("A2:A1000").Clear
  ActiveWorkbook.Names.Add "Link", "=INDIRECT(""'""&INDIRECT(""A""&CELL(""Row""))&""'!A1"")"
  Range("A1").Resize(Sheets.Count).Value = WorksheetFunction.Transpose(GetSh)
  Range("A1").Hyperlinks.Add Range("A1"), "", "Index!A1"
  Sheets.FillAcrossSheets Range("A1")
  With Range([A2], [A65536].End(xlUp))
    .Hyperlinks.Add .Cells, "", "Link"
  End With
End Sub
3> Đóng file lại rồi mở lần nữa ---> Hyperlink sẽ tự động add
4> Trong quá trình làm việc, nếu có nhu cầu thêm sheet, xóa sheet, cứ chạy code Auto_Open để cập nhật
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Bạn thử cái này xem (sửa lại cho gọn và dễ xem).

PHP:
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
Dim sh As Worksheet, n As Long
n = 1
    With Me
        .Columns(1).ClearContents
        .[a1] = "INDEX"
        .[a1].Name = "Index"
    End With
    For Each sh In Worksheets
        If sh.Name <> Me.Name Then
            n = n + 1
            With sh
                .[a1].Name = "Start" & sh.Index
                .Hyperlinks.Add .[a1], "", "Index"
            End With
            Me.Hyperlinks.Add Me.Cells(n, 1), "", "Start" & sh.Index, sh.Name
        End If
    Next
End Sub


Bác ơi, em làm copy code của bác thì ok luôn. Nhưng mà có 1 vấn đề là index đều là Start.... Em muốn trên index có tên sheet thì làm thế nào bác? Bác giúp em với ạ
Tks bác
 
Upvote 0
Bác ơi, em làm copy code của bác thì ok luôn. Nhưng mà có 1 vấn đề là index đều là Start.... Em muốn trên index có tên sheet thì làm thế nào bác? Bác giúp em với ạ
Tks bác
Thì bạn thay sh.index thành sh.name là được.
 
Upvote 0
Bác ơi, em làm copy code của bác thì ok luôn. Nhưng mà có 1 vấn đề là index đều là Start.... Em muốn trên index có tên sheet thì làm thế nào bác? Bác giúp em với ạ
Tks bác

Bạn dùng thử Code này xem.
Chú ý: Tên Sheet không được chứa dấu cách, dấu ngoặc và các ký tự đặc biệt

PHP:
Private Sub Worksheet_Activate()
With Me
    .Columns(1).Clear
    .[a1].Name = "Index"
    For Each sh In Worksheets
        If sh.Name <> Me.Name Then sh.Hyperlinks.Add sh.[a1], "", "Index"
        .[a65536].End(3)(2) = sh.Name
        .[a65536].End(3).Select
        .Hyperlinks.Add Selection, "", sh.Name & "!A1", sh.Name
        Selection.Font.Underline = 1
    Next
End With
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Tạo mục lục trên excel

Mình đang muốn tạo một mục lục ứng dụng trên Excel với tiện ích là: Bấm vào nút lựa chọn đó để lấy kết quả. VD: mình muốn chọn ngày để điền vào ô ngày, thi bấm vào nút lựa chọn trong ô đó và chon ngày thích hợp. Có bạn nào biết cách thì bày cho mình với nha. Cảm ơn nhìu!
 
Upvote 0
Cái này cũng lâu lâu rồi. Nhưng em vẫn muốn hỏi thêm, có bác nào ghé thăm thì giải thích giùm em với. Cái mục lục này rất hay. Nhưng em chỉ biết tác dụng là xem từng sheet thôi. Chứ nếu em đang dùng ở sheet thứ 20 mà em quay về 1 sheet thứ 5(ví dụ tên là "abc" gì đó) để lấy 1 giá trị áp dụng vào một biểu thức đang sử dụng ở sheet thứ 20 thì hơi khó khăn. Có giải pháp nào không các bác
 
Upvote 0
Chào các ae, mình là 1 thành viên mới xin được các ae chỉ giáo.

"LinkToSheet.xls" của bạn anhtuan1066 rất hay, nhưng mình muốn hỏi thêm 1 chút: Thay vì mình muốn đặt link bằng tên sheet mà mình muốn đặt link bằng nội dung của ô A2 (tất cả các sheet - đây chính là tiêu đề của các sheet).

AE nào chỉ giúp mình với!

Cám ơn mọi người.
http://www.giaiphapexcel.com/forum/member.php?5605-anhtuan1066
 
Upvote 0
Chào Tuấn,
Mình là một thành viên mới, minh rất hứng thú về đề tài này của bạn nhung mình không hiểu cụm từ GetSheetName là nói về cái gì? Bạn có thể giải thích thêm giùm mình không?
 
Upvote 0
Chào Tuấn,
Mình là một thành viên mới, minh rất hứng thú về đề tài này của bạn nhung mình không hiểu cụm từ GetSheetName là nói về cái gì? Bạn có thể giải thích thêm giùm mình không?

Cái này là sử dụng hàm Marco4 đây, bác Anhtuan là cao thủ trong vấn đề này.
 
Upvote 0
Chào Tuấn,
Mình là một thành viên mới, minh rất hứng thú về đề tài này của bạn nhung mình không hiểu cụm từ GetSheetName là nói về cái gì? Bạn có thể giải thích thêm giùm mình không?
Ở đây là File Help về các hàm Macro 4 anh Duyệt gửi lên. Bạn tải về nghiên cứu nha
 
Upvote 0
hỏi cách tạo mục lục trong một word sheet

xin chào các bạn, mình mới gia nhập diễn đàn, các bạn cho mình hỏi là mình muốn tạo mục lục trong 1 sheet thì phái làm cách nào? bạn nào biết thì giúp mình với. cảm on các bạn
 
Upvote 0
Vì em cho code vào This Worbook nên nó ko chạy là phải rồi...
Hướng dẩn có đoạn: Vậy em cắt đoạn code ấy và cho nó vào Sheet Index đi, nó sẽ chạy ngay lập tức

He... he...
Món này ko cần dùng VBA vẩn làm dc... Dùng công thức quá dể luôn...
Dựa trên nền file GetSheetName (May quá, nghĩ chơi chơi mà giờ có cái để ứng dụng đây)
Xem file... Sheet Index sẽ tự động cập nhật bất kể ta đổi tên sheet, xóa sheet hay thêm sheet gì nó cũng chơi tuốt.... Tất cả chỉ dùng chức năng Hyperlink và các name trong Define Name... 1 Name Link duy nhất nó có thể hiểu dc bạn đang muốn link đến Sheet nào... he...he.. 1 phát 1 cho tất cả...
ANH TUẤN

Bác Anh Tuấn ơi coi lại giúp em với,
Workbook của em có hơn 70 sheets, mà dùng công thức của bác chỉ hiện tối đa có 35 sheets à, bác có cách nào cho nó hiện hết lên không bác
 
Upvote 0
Vì em cho code vào This Worbook nên nó ko chạy là phải rồi...
Hướng dẩn có đoạn: Vậy em cắt đoạn code ấy và cho nó vào Sheet Index đi, nó sẽ chạy ngay lập tức

He... he...
Món này ko cần dùng VBA vẩn làm dc... Dùng công thức quá dể luôn...
Dựa trên nền file GetSheetName (May quá, nghĩ chơi chơi mà giờ có cái để ứng dụng đây)
Xem file... Sheet Index sẽ tự động cập nhật bất kể ta đổi tên sheet, xóa sheet hay thêm sheet gì nó cũng chơi tuốt.... Tất cả chỉ dùng chức năng Hyperlink và các name trong Define Name... 1 Name Link duy nhất nó có thể hiểu dc bạn đang muốn link đến Sheet nào... he...he.. 1 phát 1 cho tất cả...
ANH TUẤN

Dear cả nhà.

Cho tớ hỏi. Tớ đang dùng excel 2007 thì các bước sẽ như thế nào.

vì tớ cũng copy đoạn code trên rồi, save file rồi nhưng vẫn ko chạy.

Xin cảm ơn
 
Upvote 0
giúp mình với,mình đã thử làm theo các bước như trên(vì dùng excels 2010 nên phần macro mình vào fiel->options-> trust center->trust center setting-> macro setting->disable all macro without notification) nhưng không có kết quả.giúp mình nhé,tks!
 
Upvote 0
giúp mình với,mình đã thử làm theo các bước như trên(vì dùng excels 2010 nên phần macro mình vào fiel->options-> trust center->trust center setting-> macro setting->disable all macro without notification) nhưng không có kết quả.giúp mình nhé,tks!
Lý ra phải chọn mục disable all macro with notification mới đúng
(dịch câu tiếng Anh mấy tùy chọn này cũng hiểu phải chọn cái nào rồi)
 
Upvote 0
Hnay mình đã làm lại đc.Không hiểu hôm trước nhầm ở đâu.hehe.Chọn Disable all macro without notification vẫn Ok.Tks cả nhà
 
Lần chỉnh sửa cuối:
Upvote 0
Nhưng code nay khi quay trở lại index thi tốc độ hơi chậm, có cách nào cho nó chay nhanh không giật không?
 
Upvote 0
Private Sub Worksheet_Activate()
Dim wSheet As Worksheet
Dim M
As Long
M
= 1
With Me
.Columns(1).ClearContents
.Cells(1, 1) = "INDEX"
.Cells(1, 1).Name = "Index"
End With

For Each wSheet In Worksheets
If wSheet.Name <> Me.Name Then
M
= M + 1
With wSheet
.Range("H1").Name = "Start" & wSheet.Index
.Hyperlinks.Add Anchor:=.Range("H1"), Address:="", SubAddress:="Index", TextToDisplay:="Back to Index"
End With
Me
.Hyperlinks.Add Anchor:=Me.Cells(M, 1), Address:="", SubAddress:="Start" & wSheet.Index, TextToDisplay:=wSheet.Name
End
If
Next wSheet
End Sub

đoạn code trên chạy rất tốt nhưng khi có nhiều sheet và nhiều hàm thì khi đến các sheet thì rất nhanh nhưng khi trởvề index nó chậm quá có giải pháp nào cho nhanh lên đôợc không Anh Tuấn.
 
Upvote 0
Cảm ơn bạn. Tuy nhiên em muốn đổi index thành "Trang chủ" và "Quay lại trang chủ" mà trên macro toàn báo lỗi
Anh chị giúp em với. em đang cần gấp!
 
Upvote 0
Cảm ơn bạn. Tuy nhiên em muốn đổi index thành "Trang chủ" và "Quay lại trang chủ" mà trên macro toàn báo lỗi
Anh chị giúp em với. em đang cần gấp!
 
Upvote 0
--=0Cảm ơn bạn. Tuy nhiên em muốn đổi index thành "Trang chủ" và "Quay lại trang chủ" mà trên macro toàn báo lỗi
Anh chị giúp em với. em đang cần gấp!
 
Upvote 0
Bạn anhtuan ơi, cho mình hỏi là file LinktoSheet của bạn khi muốn quay về Sheet Index thì làm thế nào.
 
Upvote 0
Vì em cho code vào This Worbook nên nó ko chạy là phải rồi...
Hướng dẩn có đoạn: Vậy em cắt đoạn code ấy và cho nó vào Sheet Index đi, nó sẽ chạy ngay lập tức

He... he...
Món này ko cần dùng VBA vẩn làm dc... Dùng công thức quá dể luôn...
Dựa trên nền file GetSheetName (May quá, nghĩ chơi chơi mà giờ có cái để ứng dụng đây)
Xem file... Sheet Index sẽ tự động cập nhật bất kể ta đổi tên sheet, xóa sheet hay thêm sheet gì nó cũng chơi tuốt.... Tất cả chỉ dùng chức năng Hyperlink và các name trong Define Name... 1 Name Link duy nhất nó có thể hiểu dc bạn đang muốn link đến Sheet nào... he...he.. 1 phát 1 cho tất cả...
ANH TUẤN
Anh Tuấn cho mình hỏi tại sao file LinktoSheet của anh mở được ở máy này, nhưng máy khác lại báo lỗi #N/A? Làm cách nào để file này mở được ở bấy kỳ máy nào mà ko báo lỗi ạ?
Thanks anh!
 
Upvote 0
em là thành viên mới! em không biết hỏi ở đâu? cho e vào đây xin hỏi 1 tí!
em có 1 tập tin A trong đó co 5 sheet. nhưng e cảm thấy nhiều rồi, nên e copy tập tin A ra 1 chỗ khác
(tạm gọi là tập tin B). e đã bỏ 4 sheet trong đó. chừa lại 1 sheet cuối cùng, rồi xóa hết chừa lại tháng 12/2013 , nhưng khi e sữa tháng 12 thành tháng 01 rồi làm trên đó,xong hết! khi e quay lại tập tin A tìm lại thì hỡi ôi, nó mất hết và có nội dung y chang nội dung tập tin B mà e đã sửa
Vậy là sao các a c! có cách nào lấy lại không? xin giúp e với!! cảm ơn rất nhiều!!!
 
Upvote 0
tôi làm vậy sao khi save thi no lai báo:the following features cannot be saved in macofree worbook:
.VB project
chưa save được thi làm sao mà chọn maco enable
 
Upvote 0
Tạo mục lục vào từng vùng

Tôi đã xem chủ đề này: http://www.giaiphapexcel.com/forum/showthread.php?8798-Tạo-mục-lục-tự-động-trong-excel
Nhưng để hiểu và viết code vba tùy biến sang trường hợp của mình thì tôi chưa làm được. Mong mọi người giúp tôi vến đề tạo mục lục tự động vào vùng dữ liệu trên bảng tính trong file đính kèm.
Chỉ cập nhật những sheet có tên T1; T2; ..... con các sheet có tên khác tên (T1; T2; ..... ) thì không cập nhật
Tôi xin cảm ơn rất nhiều
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Rất mong được mọi người giúp đỡ.!.
 
Upvote 0
Xin Chào các Anh chị và tất cả mọi người trên GPE.
- Em muốn tạo Sheet menu, từ các ô của sheet menu (được tô màu vàng ở trong file đính kèm bài #49) này hiện tên các sheet T1; T2; .... để khi bấm vào thì linh đến các sheet có cùng tên là T1; T2; .... đó và tại các sheet T1; T2; .... tại ô R1. khi bấm vào ô R1 từ các sheet T1; T2; .... thì quay trở lại sheet Menu (Chỉ các sheet có tên được bắt đầu bởi chữ T), khi cập nhật các sheet có tên T thì tự động thêm vào trong vùng được tô màu vàng trong file đính kèm bài #49
- Em gửi chủ đề đã hơn một ngày nay mà chưa được hồi âm, em rất mong được cac bác quan tâm giúp em
Em xin chan thành cảm ơn các bác và tất cả mọi người!./.
 
Lần chỉnh sửa cuối:
Upvote 0
Xin Chào các Anh chị và tất cả mọi người trên GPE.
- Em muốn tạo Sheet menu, từ các ô của sheet menu (được tô màu vàng ở trong file đính kèm bài #49) này hiện tên các sheet T1; T2; .... để khi bấm vào thì linh đến các sheet có cùng tên là T1; T2; .... đó và tại các sheet T1; T2; .... tại ô R1. khi bấm vào ô R1 từ các sheet T1; T2; .... thì quay trở lại sheet Menu (Chỉ các sheet có tên được bắt đầu bởi chữ T), khi cập nhật các sheet có tên T thì tự động thêm vào trong vùng được tô màu vàng trong file đính kèm bài #49
- Em gửi chủ đề đã hơn một ngày nay mà chưa được hồi âm, em rất mong được cac bác quan tâm giúp em
Em xin chan thành cảm ơn các bác và tất cả mọi người!./.

trong file kèm, bạn xem đúng ý chưa

Tên she et được xác định theo quy luật công thức, bạn có thể copy tiếp ra (lưu ý dòng liền dong -10 dòng, cột cách nhau 4 cột) là được

Hiện tên sheet xác định theo ta lập công thức, còn muốn tự động lấy cả tên sheet nữa thì phải dùng macro4 phức tạp hơn chút - khi đó ta đổi tên sheet thì tên she et ở ô link cũng đổi theo,
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
trong file kèm, bạn xem đúng ý chưa

Tên she et được xác định theo quy luật công thức, bạn có thể copy tiếp ra (lưu ý dòng liền dong -10 dòng, cột cách nhau 4 cột) là được

Hiện tên sheet xác định theo ta lập công thức, còn muốn tự động lấy cả tên sheet nữa thì phải dùng macro4 phức tạp hơn chút - khi đó ta đổi tên sheet thì tên she et ở ô link cũng đổi theo,
- Em cảm ơn bác vodoi2x. Công thức của bác rất hay và đáp ứng được yêu cầu trong trường hợp các sheet cần link đến đã có trong file. Khi File được cập nhật thêm các sheet (Txy) bất kỳ nào đó thì không được vì tại ô R1 của các Sheet mới cập nhật đó khi bấm vào không quay trờ về Sheet Menu được.
- Mỗi lần các sheet T.... này được cập nhật thì được hiển thị vào đúng các ô theo thứ tự từ bé đến lớn, những ô ứng với tên sheet mà chưa được cập nhật thì bỏ trống. Số lượng các sheet có tên bắt đầu bằng chữ T của em là 50 sheet.
- Em mong được bác và mọi người giúp em bằng VBA với để em có thể học hỏi với, em đang chuộng món VBA này.
- Em chân thành cảm ơn bác và tất cả mọi người !.
 
Lần chỉnh sửa cuối:
Upvote 0
- Em cảm ơn bác vodoi2x. Công thức của bác rất hay và đáp ứng được yêu cầu.
- Em mong được bác và mọi người giúp em bằng VBA với để em có thể học hỏi với, em đang chuộng món VBA này.
- Em chân thành cảm ơn bác và tất cả mọi người !.

VBA thì còn đơn giản hơn nhiều, list tên sheet lên

Bạn muốn học code hay ứng dụng, học thì bạn có thể đọc các bài trên rồi tự làm, tự rút ra kinh nghiệm, nếu có gì thắc mắc thì post lên hỏi là xong
 
Upvote 0
VBA thì còn đơn giản hơn nhiều, list tên sheet lên

Bạn muốn học code hay ứng dụng, học thì bạn có thể đọc các bài trên rồi tự làm, tự rút ra kinh nghiệm, nếu có gì thắc mắc thì post lên hỏi là xong
Em cảm ơn bác.
Trước mắt là để ứng dụng ngay và sau đó là học hỏi mà chẳng biết có học được không Bác ạ, vì em cũng xem hết chủ đề này mà Thấy mình chưa làm được theo ý mình.
Bác giúp em code để em ứng dụng, sau nếu có gì vướng mắc em sẽ hỏi bác và mọi người.
Em xin cảm ơn Bác và mọi người nhiều!.
 
Lần chỉnh sửa cuối:
Upvote 0
Em cảm ơn bác.
Trước mắt là để ứng dụng ngay và sau đó là học hỏi mà chẳng biết có học được không Bác ạ, vì em cũng xem hết chủ đề này mà Thấy mình chưa làm được theo ý mình.
Bác giúp em code để em ứng dụng, sau nếu có gì vướng mắc em sẽ hỏi bác và mọi người.
Em xin cảm ơn Bác và mọi người nhiều!.


Vậy nháy phải lên tab sheet Menu và chọn View code - rồi copy paste code sau vào ,

sau đó save file (nhớ phải enable macro)


PHP:
Private Sub Worksheet_Activate()
    Application.ScreenUpdating = False
    
    Const cDiaChiDatMenu = "B10"
    Const cDiaChiDatBackToMenu = "R1"
    
    Dim wSheet As Worksheet, CEL As Range, k As Long
    Set CEL = Me.Range(cDiaChiDatMenu)
    CEL.Resize(1000, 100).ClearContents
    CEL.Value = "MENU"
    k = 0
    For Each wSheet In Worksheets
        If wSheet.Name <> Me.Name And wSheet.Name Like "T*" Then
            k = k + 1
            With wSheet
                .Hyperlinks.Add Anchor:=.Range(cDiaChiDatBackToMenu), Address:="", SubAddress:="'" & Me.Name & "'!" _
                                            & cDiaChiDatMenu, TextToDisplay:="Back to Menu"
                Me.Hyperlinks.Add Anchor:=CEL.Offset((k - 1) Mod 10 + 1, 4 * ((k - 1) \ 10)), Address:="", SubAddress:="'" & .Name & "'!" _
                                            & cDiaChiDatBackToMenu, TextToDisplay:=wSheet.Name
            End With
        End If
    Next wSheet
End Sub

Chú ý nếu cần thì thay đổi địa chỉ các ô tại 2 dòng này

PHP:
Const cDiaChiDatMenu = "B10"
Const cDiaChiDatBackToMenu = "R1"

thế là xong,
 
Lần chỉnh sửa cuối:
Upvote 0
Vậy nháy phải lên tab sheet Menu và chọn View code - rồi copy paste code sau vào ,

sau đó save file (nhớ phải enable macro)


PHP:
Private Sub Worksheet_Activate()
    Application.ScreenUpdating = False
    
    Const cDiaChiDatMenu = "B10"
    Const cDiaChiDatBackToMenu = "R1"
    
    Dim wSheet As Worksheet, CEL As Range, k As Long
    Set CEL = Me.Range(cDiaChiDatMenu)
    CEL.Resize(1000, 100).ClearContents
    CEL.Value = "MENU"
    k = 0
    For Each wSheet In Worksheets
        If wSheet.Name <> Me.Name And wSheet.Name Like "T*" Then
            k = k + 1
            With wSheet
                .Hyperlinks.Add Anchor:=.Range(cDiaChiDatBackToMenu), Address:="", SubAddress:="'" & Me.Name & "'!" _
                                            & cDiaChiDatMenu, TextToDisplay:="Back to Menu"
                Me.Hyperlinks.Add Anchor:=CEL.Offset((k - 1) Mod 10 + 1, 4 * ((k - 1) \ 10)), Address:="", SubAddress:="'" & .Name & "'!" _
                                            & cDiaChiDatBackToMenu, TextToDisplay:=wSheet.Name
            End With
        End If
    Next wSheet
End Sub

Chú ý nếu cần thì thay đổi địa chỉ các ô tại 2 dòng này

PHP:
Const cDiaChiDatMenu = "B10"
Const cDiaChiDatBackToMenu = "R1"

thế là xong,
Em cảm ơn bác nhiều!.
Code của Bác như vậy là rất ngon lành rồi.
Thưa bác và các Thành viên của GPE.
- Các Sheet T1; T2; ...... T50 này là em đặt tên cho nó như vậy để tiện quản lý cho ngắn gọn. Tên Thật của nó dài thoằng và khác nhau được các nơi gửi về cho em và không theo thứ tự từ T1 đến T50 vì thế mà danh sách tên thật của nó được em nhập trước theo thứ tự từ 1 đến 50 tương ưng vào vùng như hình em đính kèm; để khi nhận được sheet các nơi gửi về để em biết mà em Rename thành Sheet có tên tương ứng.
Như bài #53 em có trình bày
Mỗi lần các sheet T.... này được cập nhật thì được hiển thị vào đúng các ô theo thứ tự từ bé đến lớn, những ô ứng với tên sheet mà chưa được cập nhật thì bỏ trống. Số lượng các sheet có tên bắt đầu bằng chữ T của em là 50 sheet.
- Như hình sau Sheet Menu.JPG
Bác và mọi người giúp em với!.
Em xin chân thành cảm ơn!.
 
Lần chỉnh sửa cuối:
Upvote 0
Em cảm ơn bác nhiều!.
Code của Bác như vậy là rất ngon lành rồi.
Thưa bác và các Thành viên của GPE.
- Các Sheet T1; T2; ...... T50 này là em đặt tên cho nó như vậy để tiện quản lý cho ngắn gọn. Tên Thật của nó dài thoằng và khác nhau được các nơi gửi về cho em và không theo thứ tự từ T1 đến T50 vì thế mà danh sách tên thật của nó được em nhập trước theo thứ tự từ 1 đến 50 tương ưng vào vùng như hình em đính kèm; để khi nhận được sheet các nơi gửi về để em biết mà em Rename thành Sheet có tên tương ứng.
Như bài #53 em có trình bày

- Như hình sau View attachment 117345
Bác và mọi người giúp em với!.
Em xin chân thành cảm ơn!.


Vậy thì bạn cải tiến code trên mà dùng (???)

Tôi thì không hiểu chỗ bạn cho tên sheet thật và T thì khác nhau chỗ nào, và cắt nghiã việc

Mỗi lần các sheet T.... này được cập nhật thì được hiển thị vào đúng các ô theo thứ tự từ bé đến lớn, những ô ứng với tên sheet mà chưa được cập nhật thì bỏ trống. Số lượng các sheet có tên bắt đầu bằng chữ T của em là 50 sheet.
thì cái gì là "... thứ tự từ bé đến lớn...", bé/ lớn so với cái gì,

và các T ... tên sheet thật bạn sẽ gõ vào ah?

tên sheet thật là gì? khi bạn đã đổi tên sheet về T# thì đó là tên sheet hiện thời ? (nếu khác, thì bạn nên post file theo ý mới của bạn)???
 
Lần chỉnh sửa cuối:
Upvote 0
Vậy thì bạn cải tiến code trên mà dùng (???)

Tôi thì không hiểu chỗ bạn cho tên sheet thật và T thì khác nhau chỗ nào, và cắt nghiã việc


thì cái gì là "... thứ tự từ bé đến lớn...", bé/ lớn so với cái gì,

và các T ... tên sheet thật bạn sẽ gõ vào ah?

tên sheet thật là gì? khi bạn đã đổi tên sheet về T# thì đó là tên sheet hiện thời ? (nếu khác, thì bạn nên post file theo ý mới của bạn)???
Do em giải thích chưa được hợp lý lắm, Có khi càng làm rối thêm vấn đề!.
Em xin trình bày lại như sau:
- Vùng em tô màu vàng ở trên hình ở bài #57 đó là 5 vùng tương ứng mỗi vùng là 10 sheet theo thứ tự từ T1..... đến T10; tiếp đến vùng 2 là từ T11 .... đến T21; cứ như vậy theo thứ tự các sheet từ T1 đến T50 được hiển thị ở các vùng đó.
- Như vậy khi các sheet từ T1 đến T50 mà chưa có ở trong file thì ô đó được bỏ trống; như trên hình là ô chưa T2 bỏ trống; T8 bỏ trống và T18 bỏ trống. Khi nào có trong file thì được cập nhật vào đúng vị trí của nó.
Em xin cảm ơn bác nhiều!./.
 
Lần chỉnh sửa cuối:
Upvote 0
Do em giải thích chưa được hợp lý lắm, Có khi càng làm rối thêm vấn đề!.
Em xin trình bày lại như sau:
- Vùng em tô màu vàng ở trên hình ở bài #57 đó là 5 vùng tương ứng mỗi vùng là 10 sheet theo thứ tự từ T1..... đến T10; tiếp đến vùng 2 là từ T11 .... đến T21; cứ như vậy theo thứ tự các sheet từ T1 đến T50 được hiển thị ở các vùng đó.
- Như vậy khi các sheet từ T1 đến T50 mà chưa có ở trong file thì ô đó được bỏ trống; như trên hình là ô chưa T2 bỏ trống; T8 bỏ trống và T18.
Em xin cảm ơn bác nhiều!./.

Vậy thì đơn giản dùng code này (Right click lên tab sheet MENU và copy code này , nếu cso code cũ thì xoá đi) sẽ được như ý

bạn có thể xoá , cập nhập thêm các sheet và đổi tên thành dạng T# thì Menu sẽ được cập nhật


PHP:
Private Sub Worksheet_Activate()
    Application.ScreenUpdating = False
    
    Const cDiaChiDatMenu = "B10"
    Const cDiaChiDatBackToMenu = "R1"
    
    Dim wSheet As Worksheet, CEL As Range, k As Long
    Set CEL = Me.Range(cDiaChiDatMenu)
    CEL.Offset(1).Resize(1000, 100).ClearContents   ''  CEL.Value = "MENU"
    
    For Each wSheet In Worksheets
        If wSheet.Name <> Me.Name And wSheet.Name Like "T*" Then
            With wSheet
                On Error GoTo nextFOR
                k = CLng(Replace(.Name, "T", ""))
                .Hyperlinks.Add Anchor:=.Range(cDiaChiDatBackToMenu), Address:="", _
                    SubAddress:="'" & Me.Name & "'!" & cDiaChiDatMenu, TextToDisplay:="MENU"
                Me.Hyperlinks.Add Anchor:=CEL.Offset((k - 1) Mod 10 + 1, 4 * ((k - 1) \ 10)), Address:="", _
                    SubAddress:="'" & .Name & "'!" & cDiaChiDatBackToMenu, TextToDisplay:=wSheet.Name
            End With
        End If
nextFOR: Err.Clear
    Next wSheet
End Sub
 
Upvote 0
Vậy thì đơn giản dùng code này (Right click lên tab sheet MENU và copy code này , nếu cso code cũ thì xoá đi) sẽ được như ý

bạn có thể xoá , cập nhập thêm các sheet và đổi tên thành dạng T# thì Menu sẽ được cập nhật


PHP:
Private Sub Worksheet_Activate()
    
End Sub

Hoặc thế này cho chuẩn hơn,

PHP:
Private Sub Worksheet_Activate()
    Application.ScreenUpdating = False
    
    Const cDiaChiDatMenu = "B10"
    Const cDiaChiDatBackToMenu = "R1"
    
    Dim wSheet As Worksheet, CEL As Range, k As Long
    Set CEL = Me.Range(cDiaChiDatMenu)
    CEL.Offset(1).Resize(1000, 100).ClearContents   ''  CEL.Value = "MENU"
    
    For Each wSheet In Worksheets
        With wSheet
            If .Name <> Me.Name And (.Name Like "T#" Or .Name Like "T##") Then
                k = CLng(Replace(.Name, "T", ""))
                .Hyperlinks.Add Anchor:=.Range(cDiaChiDatBackToMenu), Address:="", _
                    SubAddress:="'" & Me.Name & "'!" & cDiaChiDatMenu, TextToDisplay:="MENU"
                Me.Hyperlinks.Add Anchor:=CEL.Offset((k - 1) Mod 10 + 1, 4 * ((k - 1) \ 10)), Address:="", _
                    SubAddress:="'" & .Name & "'!" & cDiaChiDatBackToMenu, TextToDisplay:=wSheet.Name
            End If
        End With
    Next wSheet
End Sub

vẫn cần chú ý

Chú ý nếu cần thì thay đổi địa chỉ các ô tại 2 dòng này
Const cDiaChiDatMenu = "B10"
Const cDiaChiDatBackToMenu = "R1"
 
Lần chỉnh sửa cuối:
Upvote 0
Vậy thì đơn giản dùng code này (Right click lên tab sheet MENU và copy code này , nếu cso code cũ thì xoá đi) sẽ được như ý

bạn có thể xoá , cập nhập thêm các sheet và đổi tên thành dạng T# thì Menu sẽ được cập nhật


PHP:
Private Sub Worksheet_Activate()
    Application.ScreenUpdating = False
    
    Const cDiaChiDatMenu = "B10"
    Const cDiaChiDatBackToMenu = "R1"
    
    Dim wSheet As Worksheet, CEL As Range, k As Long
    Set CEL = Me.Range(cDiaChiDatMenu)
    CEL.Offset(1).Resize(1000, 100).ClearContents   ''  CEL.Value = "MENU"
    
    For Each wSheet In Worksheets
        If wSheet.Name <> Me.Name And wSheet.Name Like "T*" Then
            With wSheet
                On Error GoTo nextFOR
                k = CLng(Replace(.Name, "T", ""))
                .Hyperlinks.Add Anchor:=.Range(cDiaChiDatBackToMenu), Address:="", _
                    SubAddress:="'" & Me.Name & "'!" & cDiaChiDatMenu, TextToDisplay:="MENU"
                Me.Hyperlinks.Add Anchor:=CEL.Offset((k - 1) Mod 10 + 1, 4 * ((k - 1) \ 10)), Address:="", _
                    SubAddress:="'" & .Name & "'!" & cDiaChiDatBackToMenu, TextToDisplay:=wSheet.Name
            End With
        End If
nextFOR: Err.Clear
    Next wSheet
End Sub
- Quá chuẩn luôn, Bác tài Thật sửa code trong chớp mắt. Còn em chưa biết khi nào thì hiểu và viết được
- Em xin cảm ơn bác nhiều!./.
 
Upvote 0
- Quá chuẩn luôn, Bác tài Thật sửa code trong chớp mắt. Còn em chưa biết khi nào thì hiểu và viết được
- Em xin cảm ơn bác nhiều!./.

lấy code bài #61 cho chuẩn hơn và ngắn gọn hơn,

Nhanh mà, có gì đâu bạn nắm vững lý thuyết VBA cơ bản thì mấy cái này chuyện nhỏ như con thỏ ấy mà, đừng thần tượng cao siêu gì cả cứ học cơ bản thì sẽ làm được hết,
 
Lần chỉnh sửa cuối:
Upvote 0
em thì copy và patse code của các bác vào nhưng nó chỉ chạy được một lần là sao. sau khi em tắt máy khởi động lại, code bị biến mất luôn. Mong các bác cho ý kiến ạ. mặc dù em đã nhấn Alt + Q rồi Trl + S để lưu mà không được. Mong các bác giúp đỡ. Thanks!
 
Upvote 0
em thì copy và patse code của các bác vào nhưng nó chỉ chạy được một lần là sao. sau khi em tắt máy khởi động lại, code bị biến mất luôn. Mong các bác cho ý kiến ạ. mặc dù em đã nhấn Alt + Q rồi Trl + S để lưu mà không được. Mong các bác giúp đỡ. Thanks!
Copy xode và lưu lại file dưới dạng dạng .xls chắc là được
 
Upvote 0
Tôi muốn tạo ra một file excel dùng quản lí thu phát vận đơn điện tử. Trong đó thể hiện được ngày nhận hàng, ngày phát hàng, số tiền thu được, hàng trả về, hàng phát không thành công và thống kê tỉ lệ phát thành công trong tháng. ai có thể giúp tôi xin cảm ơn!-0-/.
 
Upvote 0
Tôi muốn tạo ra một file excel dùng quản lí thu phát vận đơn điện tử. Trong đó thể hiện được ngày nhận hàng, ngày phát hàng, số tiền thu được, hàng trả về, hàng phát không thành công và thống kê tỉ lệ phát thành công trong tháng. ai có thể giúp tôi xin cảm ơn!-0-/.

ai mà làm cho bạn
thuê một nhân viên biết office văn phòng người ta làm cho
còn ko, thì bạn phải xây dựng cái sườn, có số liệu..........muốn xử lý cái gì thì người ta giúp cho
 
Upvote 0
Em thử copy sheet index của anh vào file cell của em thì nó hiện ra mục lục hết, nhưng click vào mỗi link thì nó không nhảy sang sheet mang tên như vậy mà báo lỗi reference is not valid, bác sửa giúp em với ạ
 
Upvote 0
Chào bạn,có cách nào chuyển mục lục các sheet thành mục lục các file trong một thư mục không bạn.
 
Upvote 0
Vì em cho code vào This Worbook nên nó ko chạy là phải rồi...
Hướng dẩn có đoạn: Vậy em cắt đoạn code ấy và cho nó vào Sheet Index đi, nó sẽ chạy ngay lập tức

He... he...
Món này ko cần dùng VBA vẩn làm dc... Dùng công thức quá dể luôn...
Dựa trên nền file GetSheetName (May quá, nghĩ chơi chơi mà giờ có cái để ứng dụng đây)
Xem file... Sheet Index sẽ tự động cập nhật bất kể ta đổi tên sheet, xóa sheet hay thêm sheet gì nó cũng chơi tuốt.... Tất cả chỉ dùng chức năng Hyperlink và các name trong Define Name... 1 Name Link duy nhất nó có thể hiểu dc bạn đang muốn link đến Sheet nào... he...he.. 1 phát 1 cho tất cả...
ANH TUẤN
Rất cần bạn hướng dẫn về vấn đề này. bạn có thể hướng dẫn cách làm 1 cách cụ thể gửi tới mail: minhtienttyt@gmail.com giúp mình được ko. mình gà mờ về món này quá. thanks
 
Upvote 0
Kính gửi các anh chị,
Em đọc trên một báo nào đó (thực sự ko nhớ) có nói về một VD trong excel là tạo mục lục tự động trong một sheet, để di chuyển các sheet trong bảng tính cho dễ dàng, nhưng khi thực hiện theo chỉ dẫn thì ko đc, ko biết em hiểu có đúng ko? vì em nghĩ khi tạo đc mục lục tự động thì khi thêm hoặc bỏ tên một sheet nào trong file này thì nó sẽ hiện lên trên sheet MUCLUC? mong các anh chị biết về VBA chỉ giúp. Em xin post VD của em làm và nội dung bài báo đã sưu tầm.tks - NHT
Tạo mục lục các Sheet trong Excel 2003


Đây là một thủ thuật mà mình đánh giá là...4 sao cho tính tiện dụng...

Vấn đề:
Khi làm việc với một tập tin Excel (Worbook) có nhiều worksheet (bảng tính), các bạn sẽ gặp nhiều khó khăn khi di chuyển giữa các bảng tính này.

Giải pháp:
Chúng ta sẽ tạo ra một Sheet mới với tên là MụcLục. Sau đó thêm một đoạn code vào Sheet này để tạo mục lục tự động.
{ad_200x200_right}
Các bước thực hiện:
1. Trở về Sheet đầu tiên. Vào Insert > Worksheet. Đặt tên của Sheet này lại thành MụcLục hay để nguyên tùy thích.
2. Right-click lên thẻ của Sheet này chọn View Code.
3. Copy tất cả đoạn Code này vào:
PHP:
Private Sub Worksheet_Activate()
Dim wSheet As Worksheet
Dim M As Long
M = 1
    With Me
        .Columns(1).ClearContents
        .Cells(1, 1) = "INDEX"
        .Cells(1, 1).Name = "Index"
    End With
   
    For Each wSheet In Worksheets
        If wSheet.Name <> Me.Name Then
        M = M + 1
        With wSheet
            .Range("H1").Name = "Start" & wSheet.Index
            .Hyperlinks.Add Anchor:=.Range("H1"), Address:="", SubAddress:="Index", TextToDisplay:="Back to Index"
        End With
            Me.Hyperlinks.Add Anchor:=Me.Cells(M, 1), Address:="", SubAddress:="Start" & wSheet.Index, TextToDisplay:=wSheet.Name
        End If
        Next wSheet
End Sub
4. Nhấn Alt + Q và Save lại.
5. Từ Excel, vào Tool > Macro > Security. Trong hộp thoại này, chọn mức Low. Vì trong file Excel của bạn có dùng Macro, nên đôi khi mức Macro security ở mức high, đoạn lệnh của bạn sẽ không có tác dụng. Nếu bạn chọn Mediup, bạn sẽ được nhắc là chạy macro không. Trong trường hợp này, bạn chọn Enable Macro để thấy tác dụng.
5. Nhấn Ctrl + W để đóng lại Workbook và mở lại Workbook này.
Đến đây, khi nhấp vào Sheet có tên là MụcLục, bạn sẽ thấy danh sách các bảng tính hiện ra. Nhấp vào Sheet nào mà bạn muốn di chuyển nhanh đến để làm việc....
chủ thớt cho mình hỏi ngu tí. sao đoạn code mục lục sheet này VD làm ở 1 file này thì được nhưng khi copy code ở file cell đã chạy được rồi paste sang cell khác chưa có code thì lại lỗi "Compile error: Invalid use of Me Keyword" xin nhờ cao nhân chỉ giáo giúp ạ
 
Upvote 0
em chào các anh chị ạ. cái này hay quá. em làm nhiều list hàng nhỏ nên cái này rất cần thiết ạ.
em cảm ơn anh chị nhiều ạ.
Bài đã được tự động gộp:

lấy code bài #61 cho chuẩn hơn và ngắn gọn hơn,

Nhanh mà, có gì đâu bạn nắm vững lý thuyết VBA cơ bản thì mấy cái này chuyện nhỏ như con thỏ ấy mà, đừng thần tượng cao siêu gì cả cứ học cơ bản thì sẽ làm được hết,
chào bạn. không biết mình có thể hỏi chút được ko ạ.
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom