为什么这跳过了一行单元格?

我有一个按部门筛选电子表格的macros,然后将结果复制并粘贴到相应的部门工作表中。 然后重复9个部门的每一个。 它工作正常,除了不复制和粘贴“冲压”部分的最后一行数据。 它显示突出显示的单元格,但数据不会随之传输。

任何帮助是极大的赞赏!

这是我有:

Sub UpdateTables() 'PunchPress Macro Sheets("Audit scores").Select ActiveSheet.Range("$A$1:$AL$118").AutoFilter Field:=2, Criteria1:= _ "Punch Press ESP" Range("X1").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select Selection.Copy Sheets("Punch Press").Select Range("X1").Select ActiveSheet.Paste Columns("A:A").ColumnWidth = 17.57 Columns("A:A").ColumnWidth = 20.57 Rows("2:2").RowHeight = 15 Selection.RowHeight = 15 Range("A1").Select End Sub 

基本上你在哪里使用Range(..)以不正确的方式。 我相信你会认为这个强制范围是在活动表上,但这是不正确的。 当我运行这个时,我得到一个错误。

我已经更新您的代码运行,但没有任何性能增强。 下面的工作对我来说。

 Sub UpdateTables() 'PunchPress Macro With Sheets("Audit scores") .AutoFilterMode = False '<~~Remove filters .Range("$A$1:$AL$118").AutoFilter Field:=2, Criteria1:="Punch Press ESP" .Range("X1").Select .Range(Selection, Selection.End(xlDown)).Select .Range(Selection, Selection.End(xlToRight)).Select End With Selection.Copy With Sheets("Punch Press") .Select .Range("X1").Select .Paste .Columns("A:A").ColumnWidth = 17.57 .Columns("A:A").ColumnWidth = 20.57 .Rows("2:2").RowHeight = 15 Selection.RowHeight = 15 .Range("A1").Select End With End Sub 

添加一些优化来复制你的值。 复制方法是最好的,因为您过滤了工作表,但这可以在一行中完成。 我也检索了最后一行和一列使用,而不是依靠select下来和权利,因为这将停止在一个空的单元格。

 Sub UpdateTables() 'PunchPress Macro Dim rs As Long, cs As Long With Sheets("Audit scores") rs = .Cells.Find("*", , , , xlByColumns, xlPrevious).Row cs = .Cells.Find("*", , , , xlByRows, xlPrevious).Column .AutoFilterMode = False '<~~Remove filters .Range("$A$1:$AL$118").AutoFilter Field:=2, Criteria1:="Punch Press ESP" .Range(.Cells(1, "X"), .Cells(rs, cs)).Copy Sheets("Punch Press").Range("X1") End With With Sheets("Punch Press") .Columns("A:A").ColumnWidth = 20.57 .Rows("1:2").RowHeight = 15 .Activate .Range("A1").Select End With End Sub 

我希望这有帮助。