excel vba按数字sorting表

我想在我的Excel文件中sorting表。 我发现这个代码是有效的。 但问题是我的表名是1_abc,2_adf,3_dasf,11_ad等。这个代码将11_ad放在2_adf和3_dasf之前。 我想在表格名称的“_”(第一个下划线)之前根据编号对表格进行sorting。 我怎么能这样做?

################################ UPDATE1

我修改了下面的代码。 但它是按降序排列:(我想按升序sorting

Option Explicit Sub SortWorksheets() Dim N As Integer Dim M As Integer Dim FirstWSToSort As Integer Dim LastWSToSort As Integer Dim SortDescending As Boolean SortDescending = False If ActiveWindow.SelectedSheets.Count = 1 Then 'Change the 1 to the worksheet you want sorted first FirstWSToSort = 1 LastWSToSort = Worksheets.Count Else With ActiveWindow.SelectedSheets For N = 2 To .Count If .Item(N - 1).Index <> .Item(N).Index - 1 Then MsgBox "You cannot sort non-adjacent sheets" Exit Sub End If Next N FirstWSToSort = .Item(1).Index LastWSToSort = .Item(.Count).Index End With End If For M = FirstWSToSort To LastWSToSort For N = M To LastWSToSort If SortDescending = True Then If CLng(Split(Worksheets(N).Name, "_")(0)) > _ CLng(Split(Worksheets(M).Name, "_")(0)) Then Worksheets(N).Move Before:=Worksheets(M) End If Else If CLng(Split(Worksheets(N).Name, "_")(0)) > _ CLng(Split(Worksheets(M).Name, "_")(0)) Then Worksheets(N).Move Before:=Worksheets(M) End If End If Next N Next M End Sub 

而不是这个:

 If UCase(Worksheets(N).Name) > UCase(Worksheets(M).Name) Then 

你需要这样的东西:

 If CLng(Split(Worksheets(N).Name,"_")(0)) > _ CLng(Split(Worksheets(M).Name,"_")(0)) Then