0

以下の並べ替え手順を 1 つのシートに使用しましたが、問題なく動作します。ただし、 for ループで使用して異なる範囲のシートに並べ替えようとすると、次のエラーが表示されます: Select method of Range class failed on this line:

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()をソートしているので、必要ありません。sheetRangeSelection

于 2013-09-17T01:48:14.697 に答える