excel工作表里的工作簿排序

就是我有一个excel表,里面有很多工作簿,名字都是英文,有很多。我想对他们进行排序,按字母大小排序,请问宏应该怎么写?

建议换个思路,因为表很多,涉及到文件名排序写起来麻烦,比如Art和Angel同样需要进行排序。你排序的目的只是为了方便定位,那个,你先插入一张工作表,然后用宏把工作表名称的明细导出来,然后用EXCEL的排序进行排,最后再加段代码,单击某个单元格,就跳转到名字为该单元格内容的工作表。这样代码也简单些。

 

如下:

一、新建一工作表放在首位,在模块中输出以下代码(若无则插入模块),运行即可获得工作表明细

Sub 获取工作表名明细()
Sheets(1).Cells(1, 1) = "名称"
For i = 2 To Worksheets.Count
    Sheets(1).Cells(i, 1) = Worksheets(i).Name
Next i
End Sub

二、用Excel的的排序功能,对获得的工作表明细排序

三、在工作表1中输入以下代码,目的是双击某个单元格,则自动跳转到名字为该单元格内容的工作表。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Marksheet As String
Marksheet = Target.Value
For i = 2 To Worksheets.Count
    If Worksheets(i).Name = Marksheet Then
        Worksheets(i).Select
        Exit Sub
    End If
Next i
End Sub
四、测试成功,上附件。

 

 

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-03
Sub 表格排序()
Dim i%, j%
For i = 1 To Sheets.Count - 1
    For j = 1 To Sheets.Count - 1
        If Sheets(j).Name >= Sheets(j + 1).Name Then
           Sheets(j).Move after:=Sheets(j + 1)
        End If
    Next j
Next i
Sheets(1).Select
End Sub

ALT+F11键——F7——粘贴上面的代码——运行即可。

本回答被提问者采纳
第2个回答  2019-06-02
Sub 表格排序()
Dim i%, j%
For i = 1 To Sheets.Count - 1
For j = 1 To Sheets.Count - 1
If Sheets(j).Name >= Sheets(j + 1).Name Then
Sheets(j).Move after:=Sheets(j + 1)
End If
Next j
Next i
Sheets(1).Select
End Sub
ALT+F11键——F7——粘贴上面的代码——运行即可。
第3个回答  2013-08-03
数据——排序 根据需要的要求进行排序!!!追问

工作簿里的工作表排序。。。。我说反了

追答

按动鼠标 拖动 工作簿名 到需求的地方!!!