Record is already defined: it's an array of strings, because that is what Split returns.
You could create an array of StringBuilder under a different name:
Dim builders As StringBuilder() = New StringBuilder(Record.Length - 1) {}
For i As Integer = 0 To Records.Length - 1
builders(i) = New StringBuilder(Records(i))
Next
But ... unless you propose to alter them, it's a pointless and memory consuming thing to do!
You can't define variables at runtime using a string as the name: you could use a Dictionary to do something similar:
Dim builders As Dictionary(Of String, StringBuilder) = New Dictionary(Of String, StringBuilder)()
For i As Integer = 0 To Records.Length - 1
builders(Record(i)) = New StringBuilder()
Next
End Sub
And access each StringBuilder separately via
builders
builders("AB").Append("Some text")
Console.WriteLine(builders("XY").ToString())
But to be honest, I think you are overthinking this and would be better off taking a step back and asking yourself what you are doing that you think this is a good idea. This doesn't seem like a good solution to any real world problem to me, and then normally means there have been some fundamental poor decisions made earlier on in the project design.