我做的第一件事是创建一个按钮,使用此代码复制某些单元格:
工作表(" Sheet1")。范围(" A:A,B:B,D:D")。复制_ 它运作良好。
其次,我发现代码会根据一个标准连续复制所有细节,在这种情况下,如果有一个" A"在"位置"列。
Private Sub ENTIREROW_Click() '子copyrows()
Dim i As Range,Cell as Object
设置i =范围(" D:D")'用包含您的真/假值的范围替换
我的每个细胞
If IsEmpty(Cell) Then Exit Sub End If If Cell.Value = "A" Then Cell.ENTIREROW.Copy Sheet2.Select 'Substitute with your sheet ActiveSheet.Range("A65536").End(xlUp).Select Selection.Offset(1, 0).Select ActiveSheet.Paste End If
下一步
End Sub
我的问题是,如何复制指定列(A,B,D)中的所有信息,其中有一个" A"在"位置"在一个按钮。
此外,这是我的示例数据,我将实际使用它的表格有34列要复制。当您不想要整个序列时,是否有更有效的方法来设置范围,除了C列中的数据之外的其他所有内容?
提前感谢并为我的解释技巧道歉。
答案 0 :(得分:0)
一种方式可能是:
.PasteSpecial xlPasteValues
将结果复制到目标使用xlPasteValues
仅粘贴来自源的可见单元格 - 因此没有列C
然后代码如下:。
Sub CopyRows()
With Sheets(1).Range([A2], [A2].SpecialCells(xlLastCell))
[A1].AutoFilter
.AutoFilter Field:=4, Criteria1:="A"
[C:C].EntireColumn.Hidden = True
.Copy
[C:C].EntireColumn.Hidden = False
End With
With Sheets(2)
If .Cells(Sheets(2).Rows.Count, 1).End(xlUp) = "" Then 'it's a clean sheet
.Cells(Sheets(2).Rows.Count, 1).End(xlUp).PasteSpecial Paste:=xlPasteValues
Else
.Cells(Sheets(2).Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
End If
End With
Application.CutCopyMode = False
Sheet1.[A1].AutoFilter
End Sub