2016-11-04 55 views
0

我對VBA相對較新,並且正在慢慢學習。查找字符串,然後複製並粘貼到另一個工作表中以查找特定列

我有一個非常基本的宏,將查找單詞PASSC列在我的第一個工作表,然後將整個行復制到工作表輔助,也稱爲PASS

我想從列A:E只複製和粘貼該行中的數據。以下是我目前的代碼。我曾嘗試添加.range("A:E"),但它沒有做任何事情。

有關如何獲取此信息的任何幫助,僅複製特定行的列A-E中的信息將不勝感激。

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim C As Range 

    If Intersect(Target, Me.Range("C:C")) Is Nothing Then Exit Sub 
    For Each C In Intersect(Target, Me.Range("C:C")).Cells 
    If C.Text = "PASS" Then 
     C.EntireRow.Copy Worksheets("PASS").Cells(Rows.Count, "C").End(xlUp).Offset(1).EntireRow 
    End If 
    Next 
End Sub 
+0

你需要參考範圍時指定的行數和列。 'range(「A:E」)'只指定列。它需要像'range(「a54:e54」)。 –

+0

@斯科特馬庫斯 - 你可以參考這樣的整個列,雖然效率不高。 – SJR

回答

0

試試這個

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim C As Range 

    If Intersect(Target, Me.Range("C:C")) Is Nothing Then Exit Sub 
    For Each C In Intersect(Target, Me.Range("C:C")).Cells 
    If C.Text = "PASS" Then 
     cells(C.Row,1).resize(,5).Copy Worksheets("PASS").Cells(Rows.Count, "C").End(xlUp).Offset(1).EntireRow 
    End If 
    Next 
End Sub 
+0

這完美的作品。非常感謝! –

1

我已經適應你的代碼,並改變了以下內容:

  • 定義了一些Range變量來簡化代碼
  • 如果變化是C欄然後Target單元給我們行
  • 通過獲取最後一行上找到PASS片目標行+ 1
  • 限定於通過使用Target行但列AE
  • 被複制到的數據獲得所述目標範圍的第一單元,然後執行復制

下面的代碼:

Private Sub Worksheet_Change(ByVal Target As Range) 

    Dim rngSource As Range 
    Dim lngTargetRow As Long 
    Dim rngTarget As Range 

    'was change in column C ? 
    If Intersect(Target, Me.Range("C:C")) Is Nothing Then 
     Exit Sub 
    End If 

    'change was in column C - was PASS entered 
    If Target.Text = "PASS" Then 
     'get row to copy to on PASS sheet 
     lngTargetRow = Worksheets("PASS").Cells(Rows.Count, "C").End(xlUp).Row + 1 
     'get source range 
     Set rngSource = Me.Range("A" & Target.Row & ":E" & Target.Row) 
     'set target range 
     Set rngTarget = Worksheets("PASS").Cells(lngTargetRow, 1) 
     'do the copy 
     rngSource.Copy Destination:=rngTarget 
    End If 

End Sub 
+0

謝謝你的幫助。這也適用!我將從SJR的第一個答案開始,因爲作爲一個新手,它更有意義,我能夠遵循代碼並理解。這只是我宏觀的一小部分,所以我想盡可能保持基本。 –

相關問題