Hello,

I am trying to write a macro for Excel 2003 that will allow me to search for two words in Sheet1, copy all the data below those words, and then paste that data in Sheet2. That part I can get to work. My problem is that I have multiple instances of the words I am searching for (which are Force and Grade). In Sheet1, there are usually 5 instances of Force and Grade each, although the real number is unknown. I can't seem to loop through though so that the macro will search for all instances. It just finds the first instance of each word and copy and pastes that data over and over again. Can someone please help with the proper loop here? Thank you!

Sub Copy_Paste_Bondpull()
'
'Sub Sample1()
    Dim strSearch1 As String   'searches for force
    Dim strSearch2 As String   'searches for grade

    strSearch1 = "Force"
    strSearch2 = "Grade"

    'COPY AND PASTE ALL FORCE VALUES TO FROM SHEET1 TO SHEET2

    Do While i < 5 ' This 5 is just to prevent an infinite loop

        Sheets("Sheet1").Select
        Cells.Find(What:=strSearch1, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
            xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
            , SearchFormat:=False).Activate
        ActiveCell.Offset(1, 0).Activate   'select cell below the word "Force"
        Range(ActiveCell, ActiveCell.End(xlDown)).Select    'select all cells after "Force" to first empty cell
        Selection.Copy
        Sheets("Sheet2").Select
        Cells(Selection.Row, Columns.Count).End(xlToLeft).Offset(0, 1).Select  'paste to next column
        ActiveSheet.Paste


    'COPY AND PASTE ALL GRADE VALUES FROM SHEET1 TO SHEET2
        Sheets("Sheet1").Select
        Cells.Find(What:=strSearch2, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
            xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
            , SearchFormat:=False).Activate
        ActiveCell.Offset(1, 0).Activate  'select cell below the word "Grade"
        Range(ActiveCell, ActiveCell.End(xlDown)).Select   'select all cells after "Grade" to first empty cell
        Selection.Copy
        Sheets("Sheet2").Select
        Cells(Selection.Row, Columns.Count).End(xlToLeft).Offset(0, 1).Select  'paste to next column
        ActiveSheet.Paste

    i = i + 1
    Loop

End Sub

Edited 3 Years Ago by Reverend Jim: wrong forum

This article has been dead for over six months. Start a new discussion instead.