2014-01-24 59 views
1

我的代碼幾乎按照需要工作。它檢查所有表單中的「F」列中的某個值,然後將其關聯的行復制到活動工作表。我可以讓代碼複製整行,單數列「A」或順序範圍「A:C」。我似乎無法複製像「A」「C」&「F」這樣的特定列,這正是我所需要的。Excel 2010 VBA幫助複製列的範圍

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 
+0

你可以使用某事像這樣:'範圍(「A: C:C,F:F「)複製目標:=範圍(」 H1" )' –

+0

我這個以前並根據我做的這些變化,我得到不同的錯誤「ws.Cells(我試過了,‘A’) .Range(「A:A,C:C,E:E」)。Copy Destination:= ActiveSheet.Range(「A」)。End(xlUp).Offset(1,0)'g ives me運行時錯誤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類型不匹配 – Miguel

+0

「:A,C:C,E:A E」 )'你試圖在列'A'的lastrow中粘貼值(比如'A10')。但是它並沒有完成,因爲excel試圖粘貼_entire_列,並且沒有粘貼它的地方(缺少9行)。如果您將'Destination'更改爲'Destination:= Range(「A1」)',它將起作用。所以,最好的想法是重構你的代碼。 –

回答

1

至於從評論到問題之後,正確的答案是使用以下行:

ws.Range("A" & i & ", C" & i & ", E" & i).Copy Destination:=ActiveSheet.Range("A" & Rows.Count).End(xlUp).Offset(1, 0) 

代替

ws.Cells(i, "A").Columns("A:D").Copy Destination:=ActiveSheet.Range("A" & Rows.Count).End(xlUp).Offset(1, 0)