Se me ocurre que puedes almacenar tus variables en un Dictionary o un Hashtable, y de ahi sacar el índice aleatório y su valor correspondiente:
Public Class Form1
Dim Misvariables As New Hashtable
Dim Rando As New Random
Dim MisVariablesLength As Int32 = 5
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' Add values
Misvariables.Add("Var1", True)
Misvariables.Add("Var2", False)
Misvariables.Add("Var3", 10)
Misvariables.Add("Var4", 20)
Misvariables.Add("Var5", "Test")
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' Get Random Index name
Dim VariableKey As String = Misvariables.Keys(Rando.Next(0, MisVariablesLength))
' Get Index Value
MsgBox("Variable: " & VariableKey & vbNewLine & _
"Value: " & Misvariables.Item(VariableKey))
' Get Random Value name
' MsgBox(Misvariables.Keys(Rando.Next(0, MisVariablesLength)))
' Get Random Value
' MsgBox(Misvariables.Item(Misvariables.Keys(Rando.Next(0, MisVariablesLength))))
End Sub
End Class
Creo que de otra forma (es decir, con las variables de toda la vida en el código (Dim var as...)) tienes que usar reflection y es u trabajo duro, yo intenté algo parecido y al final lo hice usando un diccionario como te he comentado.
Saludos!