我有一个按部门过滤电子表格的宏,然后复制&将结果粘贴到相应的部门工作表中。然后对9个部门中的每个部门重复。它工作正常,除了它不复制和粘贴“Punch Press”部分的数据的最后一行。它显示突出显示的单元格,但数据不会随之传输。
非常感谢任何帮助!
这就是我所拥有的:
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
答案 0 :(得分:0)
基本上你是以错误的方式使用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
为复制值添加一点优化。复制方法是最好的,因为您过滤了工作表,但这可以在一行中完成。我还检索了最后一行和列以供使用而不是依赖于向下和向右选择,因为这将停止在空单元格上。
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
我希望这会有所帮助。