Forum Discussion
Macro functions
Hi I’m new to macros and I want to be able to move a range of cells to another range of cells if a preceding cell in that range equals (say) YES. So, How do I test if a cell (A1 say in Sheet 1) equals YES and if it does, move cells A2:A8 to Sheet 2, cells A1:A7
You have to loop through the cells:
Sub MoveCells() Dim r As Long Application.ScreenUpdating = False For r = 2 To 100 If Worksheets("PICK").Range("A" & r).Value = "YES" Then Worksheets("PICK").Range("C" & r).Resize(1, 3).Cut _ Destination:=Worksheets("PRINT").Range("A" & r) End If Next r Application.CutCopyMode = False Application.ScreenUpdating = True End Sub
6 Replies
Try this macro:
Sub MoveCells() If Worksheets("Sheet1").Range("A1").Value = "YES" Then Worksheets("Sheet1").Range("A2:A8").Cut Destination:=Worksheets("Sheet2").Range("A1") Application.CutCopyMode = False End If End Sub- FennsterCopper Contributor
Thanks for your help. I am a macro and VB beginner (I used to program in COBOL)
I have got the script running but only for row 1. I have many rows with a YES that I want to copy over, how do I 'loop' the script to do row 2:100 say.
I got this far:
Sub MoveCells()
If Worksheets("PICK").Range("A1").Value = "YES" Then
Worksheets("PICK").Range("C1:E1").Copy Destination:=Worksheets("PRINT").Range("A1:E1")
Application.CutCopyMode = False
End IfI did try - If Worksheets("PICK").Range("A1:A100").Value = "YES" Then
but I get an error
Cheers, Pete
You have to loop through the cells:
Sub MoveCells() Dim r As Long Application.ScreenUpdating = False For r = 2 To 100 If Worksheets("PICK").Range("A" & r).Value = "YES" Then Worksheets("PICK").Range("C" & r).Resize(1, 3).Cut _ Destination:=Worksheets("PRINT").Range("A" & r) End If Next r Application.CutCopyMode = False Application.ScreenUpdating = True End Sub