0

我对一张纸使用了下面的排序过程,它工作得很好。但是,如果我尝试使用 for 循环对具有不同范围的工作表进行排序,则会收到错误消息: Range 类的 Select 方法在此行失败:

sheetRange.Select()

这是我的其余代码:

Dim xlWB As Excel.Workbook = CType(Globals.ThisWorkbook.Application.ActiveWorkbook, Excel.Workbook)
Dim xlWSEmployee As Excel.Worksheet = CType(CType(xlWB.Sheets("byEmployee"), Excel.Worksheet), Excel.Worksheet)
Dim xlWSPosition As Excel.Worksheet = CType(CType(xlWB.Sheets("byPosition"), Excel.Worksheet), Excel.Worksheet)


Public Function SheetsToSort(Index As Long) As Excel.Worksheet

        Select Case Index

            Case 1 : Return xlWSEmployee
            Case 2 : Return xlWSPosition

        End Select

        Throw New ArgumentOutOfRangeException("Index")

    End Function

    Public Function GetRange(index As Long) As Excel.Range

        Select Case index

            Case 1 : Return xlWSEmployee.Range("A1")
            Case 2 : Return xlWSPosition.Range("W1")

        End Select

        Throw New ArgumentOutOfRangeException("index")

    End Function

    Sub Sort_Sheets()


        Dim refSheets As Excel.Worksheet
        Dim sortRange As Excel.Range
        Dim sheetRange As Excel.Range
        Dim x As Long


        'This is Step 6 when the frmDataImportSplash is activated.

        'The key formulas only work if the data is sorted properly. The procedure
        'below sorts each sheet by the required field. Look at the public_Declarations module
        'for the pass byRef.

        For x = 1 To 2 Step 1

            refSheets = SheetsToSort(x)
            sortRange = GetRange(x)

            sheetRange = refSheets.Range("A:W")
            sheetRange.Select()

            sheetRange.Sort(Key1:=sheetRange.Range(sortRange), _
                         Order1:=Excel.XlSortOrder.xlAscending, _
                         Orientation:=Excel.XlSortOrientation.xlSortColumns, MatchCase:=False, _
                         Header:=XlYesNoGuess.xlYes)

        Next x

    End Sub
4

1 回答 1

1

您不需要sheetRange.Select(),因为您正在对 进行排序sheetRange,而不是Selection.

于 2013-09-17T01:48:14.697 回答