代码
在VBA中对工作表进行排序的最简单方法是直接使用Move
方法来移动工作表。
Sub SortSheetsByNameDescending()
Dim sheets
Dim sheet As Worksheet
Dim i As Integer, j As Integer
Dim sortedSheets() As Array
' 获取当前工作簿中的所有工作表
Set sheets = ThisWorkbook.Sheets
' 将所有工作表的名称存储到数组中
ReDim sortedSheets(1 To sheets.Count)
For i = 1 To sheets.Count
sortedSheets(i) = sheets(i).Name
Next i
' 对工作表名称数组进行降序排序
For i = LBound(sortedSheets) To UBound(sortedSheets) - 1
For j = i + 1 To UBound(sortedSheets)
If sortedSheets(i) < sortedSheets(j) Then
' 交换数组中的元素位置
Dim temp As String
temp = sortedSheets(i)
sortedSheets(i) = sortedSheets(j)
sortedSheets(j) = temp
End If
Next j
Next i
' 根据排序后的数组重新定位工作表
For i = sheets.Count To 1 Step -1
Set sheet = sheets(sortedSheets(i))
sheet.Move Before:=sheets(1)
Next i
End Sub
逻辑
- 获取所有表的名称, 存储到Array
- 对Array进行排序, 本文是按名称降序排序
- 使用sheet.move方法往前排