如果我正確地讀出你的評論,你當前的代碼(添加幾個換行符)是
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)' –