Code sắp xếp các Sheet trong một file theo Anphabet! (1 người xem)

Liên hệ QC

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

Hong.Van

Busy
Tham gia
7/5/12
Bài viết
2,330
Được thích
1,767
Thầy cô & anh chị giúp em như sau:
Trong file của em có rất nhiều Sheet, em muốn có code tự động sắp xếp các sheet theo thứ tự Anphabet
Trường hợp tên Sheet là số thì sẽ được ưu tiên đứng trước.
Em cảm ơn.
 
Thầy cô & anh chị giúp em như sau:
Trong file của em có rất nhiều Sheet, em muốn có code tự động sắp xếp các sheet theo thứ tự Anphabet
Trường hợp tên Sheet là số thì sẽ được ưu tiên đứng trước.
Em cảm ơn.

Hay là mình làm theo cách này, tạo 1 sheet INDEX hay là MỤC LỤC gì đó rồi copy code này vào
Khi cần chọn sheet nào thì double click lên ngay tên sheet đó

PHP:
Private Sub Worksheet_Activate()
Dim sh As Worksheet, i
For Each sh In Worksheets
   i = i + 1
   Cells(i, 1) = sh.Name
Next
[a1].CurrentRegion.Sort key1:=[a1], header:=1
End Sub


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
   Sheets(Target.Value).Select
End Sub
 
Upvote 0
Dùng thử macro sau: (có thể tùy biến thêm: sắp theo chiều giảm dần, phân biệt hoa-thường, thêm câu lệnh để tắt cập nhật màn hình...)
PHP:
Sub Sort2Name()
Dim sh As Worksheet, nSh As Long, i As Long, j As Long, k As Long, t As String, aR()
    nSh = ThisWorkbook.Worksheets.Count
    ReDim aR(1 To nSh)
    For Each sh In ThisWorkbook.Worksheets
        i = i + 1
        ' khong phan biet chu hoa-thuong '
        aR(i) = UCase(sh.Name)
    Next
    ' Dung giai thuat sap xep don gian (doi cho) vi so luong sheet khong qua nhieu '
    For i = 1 To nSh - 1
        Set sh = Worksheets(aR(i))
        For j = i + 1 To nSh
            ' sap theo thu tu tang dan '
            If aR(i) > aR(j) Then
                ' chuyen len truoc '
                Worksheets(aR(j)).Move before:=sh
                t = aR(i)
                aR(i) = aR(j)
                aR(j) = t
            End If
        Next
    Next
End Sub
 
Upvote 0
Thầy cô & anh chị giúp em như sau:
Trong file của em có rất nhiều Sheet, em muốn có code tự động sắp xếp các sheet theo thứ tự Anphabet
Trường hợp tên Sheet là số thì sẽ được ưu tiên đứng trước.
Em cảm ơn.

Code này tôi viết lâu rồi, bạn thử xem nhé:
PHP:
Sub SortSheet(ByVal Order As Boolean)
  Dim i As Long, j As Long
  Application.ScreenUpdating = False
  For i = 1 To Sheets.Count - 1
    For j = i + 1 To Sheets.Count
      If Sheets(IIf(Order, j, i)).Name < Sheets(IIf(Order, i, j)).Name Then
        Sheets(j).Move Before:=Sheets(i)
      End If
    Next j
  Next i
  Application.ScreenUpdating = True
End Sub
PHP:
Sub Main()
  Dim lAsk As Long
  lAsk = MsgBox("Ban muon sort tang hay giam dan?" & vbLf & _
  "Bam 'YES' de sort tang dan" & vbLf & _
  "Bam 'NO' de sort giam dan", 4)
  SortSheet (lAsk = 6)
End Sub
Chạy Sub Main, một MsgBox hiện ra ---> Bấm 'Yes' để sort tăng dần và 'No' để sort giảm dần
 
Upvote 0
Anh quanghai1969 chưa hiểu ý em, nhưng vô tình anh cho code để em có thể quản lý có được bao nhiêu Sheet trong File, kể cả sheet đang ẩn.
-------------
Code của anh hoangvuluan không fân biệt chữ hoa và chữ thường (muốn fân biệt thì bỏ Ucase là được) . Khi chạy code nó nhảy rất vui mắt, hi em thêm cặp
PHP:
Application.ScreenUpdating=False
...............
Application.ScreenUpdating=True
là nó im ngay.

-----------------------

Code của thầy ndu96081631 có fân biệt chữ hoa, chữ thường.
Em xin cảm ơn Thầy & các Anh!
 
Upvote 0
Web KT

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

Back
Top Bottom