使用VBAsorting

我有下面的代码

Dim Lasteuro As Long ThisWorkbook.Sheets("Euro Cash").Range("A2:AF").Sort Key1:=Range("T2:T"), Order1:=xlAscending, Key2:=Range("V:V"), Order2:=xlAscending, Header:=xlYes Lasteuro = Sheets("Euro Cash").Range("a1").End(xlDown).Row Sheets("Euro Cash").Range("A:U").AutoFilter Field:=17, Criteria1:=Array("LNCCP", "LNLCHSCM"), Operator:=xlFilterValues 'Sec No.' Sheets("Euro Cash").Range("D2:D" & Lasteuro).Copy Sheets("Master").Range("K6").PasteSpecial Paste:=xlPasteValues 'Cpty Name' Sheets("Euro Cash").Range("F2:F" & Lasteuro).Copy Sheets("Master").Range("L6").PasteSpecial Paste:=xlPasteValues 'Break' Sheets("Euro Cash").Range("I2:I" & Lasteuro).Copy Sheets("Master").Range("M6").PasteSpecial Paste:=xlPasteValues 'Age' Sheets("Euro Cash").Range("P2:P" & Lasteuro).Copy Sheets("Master").Range("P6").PasteSpecial Paste:=xlPasteValues Sheets("Euro Cash").ShowAllData 

然而,运行时,我得到:

运行时错误“1004”:方法对象_Global的范围失败。

我点击debugging,它突出了这一点

 ThisWorkbook.Sheets("Euro Cash").Range("A2:AF").Sort Key1:=Range("T2:T"), Order1:=xlAscending, Key2:=Range("V:V"), Order2:=xlAscending, Header:=xlYes 

所以我所做的是改变Thisworkbook.Sheets – 仍然是相同的错误..我该怎么办?

Range.Sort方法中 Range对象的使用可以解释父级工作表是什么。

 Dim Lasteuro As Long With Sheets("Euro Cash") If .AutoFilterMode Then .AutoFilterMode = False Lasteuro = .Cells(Rows.Count, 1).End(xlUp).Row .Range("A:AF").Sort Key1:=.Columns(20), Order1:=xlAscending, _ Key2:=.Columns(22), Order2:=xlAscending, _ Header:=xlYes .Range("A:U").AutoFilter Field:=17, Criteria1:=Array("LNCCP", "LNLCHSCM"), _ Operator:=xlFilterValues 'Sec No.' .Range("D2:D" & Lasteuro).Copy Sheets("Master").Range("K6").PasteSpecial Paste:=xlPasteValues 'Cpty Name' .Range("F2:F" & Lasteuro).Copy Sheets("Master").Range("L6").PasteSpecial Paste:=xlPasteValues 'Break' .Range("I2:I" & Lasteuro).Copy Sheets("Master").Range("M6").PasteSpecial Paste:=xlPasteValues 'Age' .Range("P2:P" & Lasteuro).Copy Sheets("Master").Range("P6").PasteSpecial Paste:=xlPasteValues If .AutoFilterMode Then .AutoFilterMode = False End With 

请注意使用.Range而不是Range 。 这意味着父母是With … End With语句中定义的父母。 定义密钥时只需要指定第一个单元格。

仔细查看所有代码(并查看提供的注释)之后,我更改了sorting范围,以便识别第1行中的列标题标签。