我想将列 A 和 B 复制到新工作表范围 A 和 B(源工作表过滤器应用于列 H)
此代码是录制的,当我使用此代码时会出现随机错误。因为我有 5 个子宏,当我调用这些子宏时,它无法正确运行。但单个宏可以完美运行。
因此我需要像这种方法一样不使用剪贴板进行复制。当过滤器应用条件时不使用它
Sheets("GROUP1").Range("A:B").Value = Sheets("Sheet3").Range("A:B").Value
录制宏
Sub Copypaste()
'Application.ScreenUpdating = False
Sheets("GROUP1").Select
Cells.Select
Cells.EntireColumn.AutoFit
Range("A1:H1").Select
Range("H1").Activate
Application.CutCopyMode = False
Selection.AutoFilter
ActiveSheet.Range("$A:$H").AutoFilter Field:=8, Criteria1:="K-True", Operator:=xlFilterValues
Columns("A:B").Select
Application.CutCopyMode = False
Selection.Copy
DoEvents
Sheets("Sheet3").Select
Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
答案1
您可以做的是循环检查源表然后Cell.RowHeight > 0
设置DestinationCell.Value = SourceCell.Value
。例如:
Sub Copypaste()
Dim lRow As Long, lLastRow As Long, LRowCount As Long
Sheets("GROUP1").Select
Cells.Select
Cells.EntireColumn.AutoFit
Range("A1:H1").Select
Range("H1").Activate
Application.CutCopyMode = False
Selection.AutoFilter
ActiveSheet.Range("$A:$H").AutoFilter Field:=8, Criteria1:="K-True", Operator:=xlFilterValues
lRowCount = 1
lLastRow = ActiveSheet.Cells.SpeciallCells(xlCellTypeLastCell).Row
For lRow = 1 to lLastRow
If ActiveSheet.Range(lRow).RowHeight > 0 Then
Sheets("Sheet3").Range("A" & lRowCount & ":B" & lRowCount).Value = ActiveSheet.Range("A" & lRowCount & ":B" & lRowCount).Value
lRowCount = lRowCount + 1
End If
Next
End Sub
附言:如果您有任何问题,请告诉我。