【发布时间】:2014-01-24 18:49:55
【问题描述】:
我的代码几乎可以正常工作。它检查所有工作表中“F”列中的某个值,然后将其关联的行复制到活动工作表。我可以让代码复制整行、单列“A”或连续范围“A:C”。我似乎无法让它复制特定的列,如“A”、“C”和“F”,这是我需要它做的。
Public Sub List()
Dim ws As Worksheet
Dim i As Integer
ActiveSheet.Rows("3:" & ActiveSheet.Rows.Count).Clear
Selection.Clear
For Each ws In Worksheets
If ws.Name <> ActiveSheet.Name Then
For i = 1 To ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
If ws.Cells(i, "F").Value = "Pending" Then
ws.Cells(i, "A").Columns("A:D").Copy Destination:=ActiveSheet.Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
End If
Next
End If
Next
【问题讨论】:
-
你可以这样使用:
Range("A:A,C:C,F:F").Copy Destination:=Range("H1") -
我以前试过这个,根据我所做的变化,我得到不同的错误 'ws.Cells(i, "A").Range("A:A,C:C,E:E ").Copy Destination:=ActiveSheet.Range("A").End(xlUp).Offset(1, 0)' 给我一个运行时错误 1004 应用程序或对象定义错误 & 'ws.Cells(i, "A ").Columns("A:A,C:C,E:E").Copy Destination:=ActiveSheet.Range("A" & Rows.Count).End(xlUp).Offset(1, 0)' 给出我运行时错误 13 类型不匹配
-
当您使用
Range("A:A,C:C,E:E")时,您会尝试将值粘贴到A列的最后一行(例如A10)。但它无法完成,因为 excel 尝试粘贴 整个 列并且没有粘贴它的地方(缺少 9 行)。如果您将Destination更改为Destination:=Range("A1"),它将起作用。所以,最好的办法是重构你的代码.. -
感谢您的快速回复。也许我会因为我想要它做的事情而犯错。如果在第 10 行中找到它们,我希望它检查所有工作表中“F”列中的值“待定”我希望将 A10、C10 和 E10 复制到活动工作表中。我刚刚尝试了您的建议并得到了相同的运行时 1004 错误。 'ws.Cells(i, "A").Range("A:A,C:C,E:E").Copy Destination:=Range("A1").End(xlUp).Offset(1, 0 )'
-
试试这个:
ws.Range("A" & i & ", C" & i & ", E" & i).Copy Destination:=ActiveSheet.Range("A" & Rows.Count).End(xlUp).Offset(1, 0)。 (ps如果有帮助,请说,我会像答案一样发布)