I solved the problem by adding an additional streamreader and reading only the first line. By keeping the first streamreader out of the loop, the out-of-range problem goes away. I then use the array.IndexOf(arrayname, "HeadingText") to get the index, which works as expected. The somewhat cleaned up code is shown below.
Dim msg As New System.IO.StreamReader(fileName)
Dim myString As String
myString = msg.ReadLine()
myArray = Split(myString, ",")
h0 = Array.IndexOf(myArray, "Division")
h1 = Array.IndexOf(myArray, "SailNo")
h2 = Array.IndexOf(myArray, "Boat")
h3 = Array.IndexOf(myArray, "Class")
h4 = Array.IndexOf(myArray, "HelmName")
h5 = Array.IndexOf(myArray, "Club")
'h6 = Array.IndexOf(myArray, "Buoy")
h7 = Array.IndexOf(myArray, "Rating")
Dim objReader As New System.IO.StreamReader(fileName)
Dim entrantStr As String
entrantStr = objReader.ReadLine()
Do While objReader.Peek() <> -1
entrantStr = objReader.ReadLine()
entArr = Split(entrantStr, ",")
dgv1.Rows.Add()
dgv1(0, i).Value = entArr(h0) '1)
dgv1(1, i).Value = Regex.Replace(entArr(h1), "[^\d]", "")
dgv1(2, i).Value = StrConv(entArr(h2), vbProperCase)
dgv1(3, i).Value = entArr(h3 + 2) '15)
dgv1(4, i).Value = entArr(h4) '7)
dgv1(5, i).Value = entArr(h5) '6)
dgv1(6, i).Value = "--"
dgv1(7, i).Value = entArr(h7) '4)
dgv1(8, i).Value = "--"
dgv1(9, i).Value = "--"
dgv1(10, i).Value = "2019"
i += 1
Loop
objReader.Close()
objReader.Dispose()