如果我正确地读出你的评论,你当前的代码(添加几个换行符)是
Set sht = Workbooks("test_vba.xlsx").Worksheets("Sheet1")
LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
LastColumn = sht.cells(1,sht.columns.count).End(XlToLeft).Column
sht.Range(Cells(1, 1), _
Cells(1,LastColumn) & Sheets("sheet1").Range("A1").End(xlDown).Row).Sort _
Key1:=sht.Range("A:A"), _
Order1:=xlAscending, _
Key2:=sht.Range(Cells(1,LastColumn), Cells(LastRow,LastColumn)), _
Order2:=xlDescending, _
Header:=xlYes
,因为你是从最后一列上取值本节说Cells(1,LastColumn) & Sheets("sheet1").Range("A1").End(xlDown).Row
有问题第1行并将列A中最后一行的行号添加到该行中 - 这不会给你一个Range
。
我相信你正在寻找的东西,如:
Dim LastRow As Long
Dim LastColumn As Long
Dim sht As Worksheet
Set sht = Workbooks("test_vba.xlsx").Worksheets("Sheet1")
LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
LastColumn = sht.Cells(1, sht.Columns.Count).End(xlToLeft).Column
sht.Range(sht.Cells(1, "A"), sht.Cells(LastRow, LastColumn)).Sort _
Key1:=sht.Columns(1), Order1:=xlAscending, _
Key2:=sht.Columns(LastColumn), Order2:=xlDescending, _
Header:=xlYes
你怎么申报'LastColumn()'?一般来说,我做'Dim lastColumn as Long'然后'LastColumn = sht.cells(1,sht.columns.count).End(XlToLeft).Column',并返回列号... – BruceWayne
我刚才宣布LastColumn为字符串,并返回最后一列字母而不是列号。 –
使用像@BruceWayne所述的列号,并使用'Range()'中的'Cells(RowNumber,ColumnNumber)' –