Public Class Поиск
    Dim Pozition As Integer = 1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If InStr(Pozition, LCase(Form1.TextBox1.Text), LCase(Trim(TextBox1.Text))) <> 0 Then ' При помощи функции InStr в TextBox2 ищем текст введенный в TextBox1, функции LCase нужна для перевода всех символов в нижний регистр, т.е. это для того чтобы искался текст не зависимо от того в каком регистре символ(короче, ПриВет и пРИвЕТ будет искаться одинаково). Функция Trim нужна для обрезания пробелов слево и справо. Переменная Pozition задает позицию курсора(по умолчания Pozition = 1, т.е. поиск будет с первого символа)

            Form1.TextBox1.Focus() ' TextBox2 передаем фокус
            Form1.TextBox1.SelectionStart = InStr(Pozition, LCase(Form1.TextBox1.Text), LCase(Trim(TextBox1.Text))) - 1 ' Устанавливаем позицию курсора перед найденным словом. Всё дело в том, что если в тексте было найденно искомое слово, то функция выдает позицию этого слова(т.е. количество символов перед искомым словом в тексте). 
            Form1.TextBox1.SelectionLength = Len(Trim(TextBox1.Text)) ' Выделяем найденное слово(выделение начинается с позиции курсора, и длится столько, сколько символов в слове)
            Form1.TextBox1.ScrollToCaret() ' Прокручиваем текст до выделенного слова 


            Pozition = Form1.TextBox1.SelectionStart + Len(Trim(TextBox1.Text)) ' Переменная Pozition = позиции найденного слова, это для того чтобы одно слово не искалась по несколько раз 

        Else ' Если ни чего не найденно(или поиск закончен), то выдаем сообщение и устанавливаем значение переменных по умолчанию 

            MsgBox("Поиск завершен")
            Pozition = 1
        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Me.Hide()
    End Sub
End Class