以字母顺序正确的位置添加新工作表

时间:2015-06-14 13:00:19

标签: excel vba sorting

我有一个包含多个工作表的工作簿,目前有6个,但将来会有所增加。选项卡/工作表名称按字母顺序排列,带有"模板"最后一页。

我正在克隆模板表&使用用户指定的名称创建一个新的工作表,但是如何将其插入到工作簿中,以便按字母顺序排在正确的位置?

2 个答案:

答案 0 :(得分:1)

我知道工作簿已经排序,并且必须按字母顺序插入新工作表,从模板工作表复制。以下代码将执行此操作:

<!-- Cordova reference, this is added to your app when it's built. -->
    <script src="app/scripts.js"></script> <!-- wHERE IT WAS SUPPOSED TO GO -->
    <script src="cordova.js"></script>
    <script src="scripts/platformOverrides.js"></script>
    <script src="scripts/index.js"></script>

答案 1 :(得分:0)

作为替代方案。要在之后对工作表进行排序,请添加新工作表:

Sub SheetSorter()
    Dim ary() As String, I As Long
    ReDim ary(1 To Sheets.Count)

    For I = 1 To Sheets.Count
        ary(I) = Sheets(I).Name
    Next I

    Call VBA_Sort(ary)

    For Each a In ary
        Sheets(a).Move after:=Sheets(Sheets.Count)
    Next a
End Sub

Public Sub VBA_Sort(InOut() As String)
    Dim I As Long, J As Long, Low As Long, _
        Hi As Long, Temp As Variant
    Low = LBound(InOut)
    Hi = UBound(InOut)

    J = (Hi - Low + 1) \ 2
    Do While J > 0
        For I = Low To Hi - J
          If InOut(I) > InOut(I + J) Then
            Temp = InOut(I)
            InOut(I) = InOut(I + J)
            InOut(I + J) = Temp
          End If
        Next I
        For I = Hi - J To Low Step -1
          If InOut(I) > InOut(I + J) Then
            Temp = InOut(I)
            InOut(I) = InOut(I + J)
            InOut(I + J) = Temp
          End If
        Next I
        J = J \ 2
    Loop
End Sub