VBA中如何对工作表进行排序

代码

在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

逻辑

  1. 获取所有表的名称, 存储到Array
  2. 对Array进行排序, 本文是按名称降序排序
  3. 使用sheet.move方法往前排

请添加图片描述