Lấy sheet list mà không cần vòng lặp (1 người xem)

Liên hệ QC

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

Let'GâuGâu

Thành viên mới
Tham gia
12/9/13
Bài viết
3,131
Được thích
2,732
Chào mọi người

trước tới mỗi khi lấy tên sheet thì thấy dùng vòng lặp để lấy nó
hôm trước tình cờ có thấy một anh làm chung khi xem list của sheet, anh ta click chuột phải vào góc trái màn hình (nằm ở thanh cuộn ngang, chổ mấy cái mũi tên) thì danh sách các sheet hiên lên
như vậy excel đã có sẳn cái list này để ở đâu đó, vậy liệu rằng chúng ta có thể dùng code lấy nó ra mà không

cám ơn
 
Chào mọi người

trước tới mỗi khi lấy tên sheet thì thấy dùng vòng lặp để lấy nó
hôm trước tình cờ có thấy một anh làm chung khi xem list của sheet, anh ta click chuột phải vào góc trái màn hình (nằm ở thanh cuộn ngang, chổ mấy cái mũi tên) thì danh sách các sheet hiên lên
như vậy excel đã có sẳn cái list này để ở đâu đó, vậy liệu rằng chúng ta có thể dùng code lấy nó ra mà không

cám ơn
Cái công cụ đó có trên mọi Excel, nhưng nó là cái gì (MS đặt tên cho nó là công cụ gì) mình còn không biết tên, vậy làm sao gọi được nó ra mà lấy dữ liệu chứ?
 
Upvote 0
Cái công cụ đó có trên mọi Excel, nhưng nó là cái gì (MS đặt tên cho nó là công cụ gì) mình còn không biết tên, vậy làm sao gọi được nó ra mà lấy dữ liệu chứ?

Cái đó gọi là CommandBars("Workbook Tabs")... tiếc là CommandBars("Workbook Tabs").Controls lại là collection chứ hổng phải array nên cuối cùng vẫn phải vòng lập
Muốn lấy tên các sheet không cần vòng lập, vẫn có cách khác mà:
Mã:
Function GetSh()
  Dim Temp()
  ThisWorkbook.Names.Add String(240, "z"), "=SUBSTITUTE(GET.WORKBOOK(1),""[""&GET.WORKBOOK(16)&""]"","""")"
  Temp = Evaluate("Transpose(" & String(240, "z") & ")")
  Temp = WorksheetFunction.Transpose(Temp)
  ThisWorkbook.Names(String(240, "z")).Delete
  GetSh = Temp
End Function
 
Upvote 0
Mình thấy trên mạng có chia sẻ 1 cach ko cần dùng VBA
Ctrl + F3, New | Name = SheetNames

Enter this in the refers to box
=REPLACE(GET.WORKBOOK(1),1,FIND("]",GET.WORKBOOK(1)),"")
OK Out and put this in a cell and drag down.
=IFERROR(INDEX(SheetNames,ROWS($A$2:A2)),"")
 
Upvote 0
Mình thấy trên mạng có chia sẻ 1 cach ko cần dùng VBA
Ctrl + F3, New | Name = SheetNames

Enter this in the refers to box
=REPLACE(GET.WORKBOOK(1),1,FIND("]",GET.WORKBOOK(1)),"")
OK Out and put this in a cell and drag down.
=IFERROR(INDEX(SheetNames,ROWS($A$2:A2)),"")

thì đằng nào nó cũng xài macro (nó là dạng macro4)
bạn lưu file dưới dạng xlsm xem, "nó xơi tái chứ lị",,,,kekekekek
 
Upvote 0

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

Back
Top Bottom