我在使用特定列值排序数据时遇到错误

时间:2017-04-03 11:18:49

标签: excel-vba vba excel

这里我想使用I列数据中的数据对数据范围(A1:K17)进行排序。但是这里我得到了错误:

  

RUNTIME ERROR 1004应用程序定义

End Sub之前的最后一行..任何人都可以帮助我吗?

Sub MySort()

Dim LastRow As Long

LastRow = Worksheets("DataSheet").Cells(Rows.Count, 1).End(xlUp).Row

Range("A1:K" & LastRow).Sort Key1:=Range("I1:I" & LastRow), _
   Order1:=xlAscending, Header:=xlNo

End Sub

2 个答案:

答案 0 :(得分:0)

如果DataSheet处于活动状态并已选中,则您的代码可以在我的计算机上正常运行。为确保无论如何都能正常工作,您需要在整个排序语句中完全限定表单:

Sub MySort()

Dim LastRow As Long

With Worksheets("DataSheet")
   LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row

   .Range("A1:K" & LastRow).Sort Key1:=.Range("I1:I" & LastRow), _
      Order1:=xlAscending, Header:=xlNo
End With

End Sub

答案 1 :(得分:0)

您需要完全限定与Worksheets("DataSheet")相关的所有对象。

LastRow = Worksheets("DataSheet").Cells(Rows.Count, 1).End(xlUp).Row 

Range("A1:K" & LastRow)

事实上,使用With Worksheets("DataSheet")语句更容易。

<强>代码

Option Explicit

Sub MySort()

Dim LastRow As Long

With Worksheets("DataSheet")
    LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row

    .Range("A1:K" & LastRow).Sort Key1:=.Range("I1:I" & LastRow), _
                                 Order1:=xlAscending, Header:=xlNo
End With

End Sub