The find functionality clearly needs some tweaking because the way rtb.Find finds and selects text is done in a strange and illogical manner. There should obviously be a separate FindAll method applied to richtextboxes that finds and selects all instances of a search, which can be verified by the enormous amount of threads and tutorials of using Find in richtextboxes (all of which are overcomplicated).
The solution to this problem is laughable, especially when I read for about 4 hours and could not find the simple answer I knew existed. I saw people write multiple functions and sub procedures to do this:
So there it is for the sake of others. I couldn't find one Google hit where this code appeared. I thank God for wisdom that Google and searching multiple forums could not impart.
Dim textEnd As Integer = txtSelection.TextLength
Dim index As Integer = 0
Dim lastIndex As Integer = txtSelection.Text.LastIndexOf(txtSearch.Text)
While index < lastIndex
txtSelection.Find(txtSearch.Text, index, textEnd, RichTextBoxFinds.None)
txtSelection.SelectionBackColor = Color.Yellow
index = txtSelection.Text.IndexOf(txtSearch.Text, index) + 1