I was able to solve this by using a combination of an if statement and looping through any rows that were left after the main rows had been processed.
Because of the extra input field above rowValue is just a way to increment everything by one if the field exist and if it doesn't then it uses the normal row number.
If ds.Tables(0).Rows.Count() > (11 + rowValue) Then
For i = (11 + rowValue) To ds.Tables(0).Rows.Count()
If ds.Tables(0).Rows(i).Item("DynamicQuestionID") = GUID Then
specifyOther += " Name: " & ds.Tables(0).Rows(i).Item("response")
ElseIf ds.Tables(0).Rows(i).Item("DynamicQuestionID") = GUID Then
specifyOther += " Search: " & ds.Tables(0).Rows(i).Item("response")
ElseIf ds.Tables(0).Rows(i).Item("DynamicQuestionID") = GUID Then
specifyOther = "Referrer: " & ds.Tables(0).Rows(i).Item("response")
ElseIf ds.Tables(0).Rows(i).Item("DynamicQuestionID") = GUID Then
specifyOther = " Other: " & ds.Tables(0).Rows(i).Item("response")
Else
specifyOther = " Specify: " & ds.Tables(0).Rows(i).Item("response")
End If
i+=1
Next
End If