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.
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
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
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.
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
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
Application.ScreenUpdating=False
...............
Application.ScreenUpdating=True