Вот упрощенный пример, показывающий CallByName(). Обратите внимание на целевые переменные Public:
Public Class Form1
Public _101 As String
Public _102 As String = "{Default Value}"
Public _103 As String
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Debug.Print("Before: _102 = " & _102)
Dim ColMap As Integer = 102
Dim ValorLeido As String = "Hello World!"
Dim varName As String = "_" & ColMap
CallByName(Me, varName, CallType.Let, ValorLeido)
Debug.Print("After: _102 = " & _102)
End Sub
End Class
И вот то же самое через Отражение, что позволяет целевые переменные быть Private:
Imports System.Reflection
Public Class Form1
Private _101 As String
Private _102 As String = "{Default Value}"
Private _103 As String
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Debug.Print("Before: _102 = " & _102)
Dim ColMap As Integer = 102
Dim ValorLeido As String = "Hello World!"
Dim varName As String = "_" & ColMap
Dim fi As FieldInfo = Me.GetType.GetField(varName, Reflection.BindingFlags.Public Or Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.Instance)
fi.SetValue(Me, ValorLeido)
Debug.Print("After: _102 = " & _102)
End Sub
End Class
Вам нужно включить больше кода, есть выделить происходит в этом блоке, который ambigeous к прохожему. Или добавьте немного больше деталей к вашему вопросу. Трудно сказать, какова ваша цель. – DarrenMB
Технически возможно использование Reflection. Если целевыми переменными являются Public, вы можете использовать устаревшую функцию CallByName(), упрощая синтаксис. Он будет работать, только если переменные находятся в классе, но поскольку CallByName() не будет работать с модулями. –