模板 | 工作表如何重新排序?

今儿……我们说个常见但是对新手而言不太好处理的问题!

工作表重新排序,不像单元格中的数值、文本我们只要点一下按钮就可以排序了,工作表没有这样的功能,尤其当工作表顺序需要重新调整的时候,这个就是一个麻烦的问题!所以小编决定来给大家写一个模板

刚写完代码还是热乎的!我们一起来看看效果,本文模板文件下载见文末

效果演示
功能说明:
1、打开工作簿自动添加右击菜单-【获取工作表名称】和 【工作表名称排序】
2、第一步先点击【获取工作表名称】,在自动添加一个【工作表名称】表
获取到的全部数据全面工作表名称都在里面
3、第二步调整名称顺序,根据自己需要的新的顺序,调整后,点击 【工作表名称排序】即可完成顺序重排
如果工作表较多,大家可以添加一列辅助列,填写新的序号,然后按填写的序号排序,调整后就是想要的顺序!
VBA代码方面:
Public Const newShtName As String = "工作表名称"

'公众号:Excel办公实战
'作者:小易
'时间:20201025224850
'-----------------------------------------------------
Sub 获取工作表名称()
    '新建一个工作表-重命名用于存放数据
    On Error Resume Next

Dim ws As Worksheet
    Set ws = Worksheets(newShtName)
    
    Dim Wb As Workbook
    Set Wb = ActiveWorkbook
    If Err <> 0 Then
        With Wb
            .Sheets.Add before:=.Sheets(1)
            ActiveSheet.Name = newShtName
        End With
        Err.Clear
    Else
        ws.Cells.Clear
    End If
    
    '获取工作表名称
    Dim i As Integer
    Wb.Worksheets(newShtName).[a1:b1] = [{"序号","名称"}]
    For i = 2 To Wb.Worksheets.Count
        With Wb.Worksheets(newShtName)
            .Cells(i, 1) = i - 1 '序号
            .Cells(i, 2) = Wb.Worksheets(i).Name
        End With
    Next
End Sub

Sub 工作表排序()
    Dim i As Integer
    Dim j As Integer
    Dim ws As Worksheet
    With ActiveWorkbook
        Set ws = .Worksheets(newShtName)
        For i = 2 To .Sheets.Count + 1
            For j = .Sheets.Count To i Step -1
                If ws.Cells(i, 2).Value = .Sheets(j).Name Then
                    If i <> j Then
                        .Sheets(j).Move before:=.Sheets(i)
                    End If
                End If
            Next
        Next
        .Sheets(1).Select
    End With
End Sub

右击菜单等代码在附件中就不再贴出了!
其实我相等于写了两个功能,提取名称+排序
如果想在所有文件中都可以用,那么可以稍微改改的代码,做成加载宏即可!
(0)

相关推荐