Excel vbasortingmacros

我正在devise一个macros,将按键复制和sorting数据,然后在vba中的原始表之前插入2列。 我已经开始编写代码,它到目前为止工作得很好,但是当我尝试插入2列时,它给了我一个Select method of Range class failed错误的Select method of Range class failedSheet2.Columns("A:A").Select我很困惑这是为什么发生。 任何帮助将不胜感激。

 Sub crossUpdate() Dim rng1 As Range, rng2 As Range, rng1Row As Range, rng2Row As Range, Key As Range, match As Integer 'Unhide and Unfilter columns and rows on original sheet Sheet1.Cells.EntireColumn.Hidden = False Sheet1.Cells.EntireRow.Hidden = False Sheet1.Cells.AutoFilter 'Copy and paste original sheet to new temp sheet Sheet1.Cells.Select Selection.Copy Sheets.Add.Name = "SourceData" ActiveSheet.Paste Range("A1").Select 'Sort temp sheet by key N = Cells(Rows.Count, "A").End(xlUp).row Set rng1 = Sheets("SourceData").Cells.Range("A2:A" & N) Set rng1Row = rng1.EntireRow rng1Row.Sort Key1:=Sheets("SourceData").Range("A1") 'Unhide and Unfilter columns and rows on original sheet Sheet2.Cells.EntireColumn.Hidden = False Sheet2.Cells.EntireRow.Hidden = False Sheet2.Cells.AutoFilter 'Update sheet sorted by key N = Cells(Rows.Count, "A").End(xlUp).row Set rng2 = Sheets("Sheet2").Cells.Range("A2:A" & N) Set rng2Row = rng2.EntireRow rng2Row.Sort Key1:=Sheets("Sheet2").Range("A1") Sheet2.Columns("A:A").Select Selection.Insert Shift:=xlToRight Sheets("SourceData").Columns("A:A").Select Selection.Insert Shift:=xlToRight End Sub 

我认为这是因为您正在使用不同于活动表格的select。

一个解决办法是做:

 Sheet2.Select Sheet2.Columns("A:A").Select 

另一个解决scheme是根本不使用select(这几乎总是更好)

 Sheet2.Columns("A:A").Insert Shift:=xlToRight