Try the following code, placed in the sheet1 module:-
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Value = vbNullString Then Exit Sub
If Intersect(Target, Columns("D:D")) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
If Target.Value = "True" Then
Sheet2.Range("A" & Rows.Count).End(3)(2).PasteSpecial xlValues
Application.CutCopyMode = False
Application.ScreenUpdating = True
The code assumes that the criteria "True" is in Column D of Sheet1(change the Column letter to suit your needs). Each row with the "True" criteria in Column D will be transferred to Sheet 2. The "used" row of data in Sheet 1 will be cleared.
To implement the code:-
- Right click on the Sheet1 tab.
- Select "view code" from the menu that appears.
- In the big white field that then appears, paste the above code.
Every time that you place "True" in any cell in Column D and then click away (or press enter or down arrow) the entire row of relevant data will be transferred to Sheet2. Make sure that "True" is the last entry in a row.
Test the code in a copy of your work book first.
I hope that this helps.