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