hola mira no esta de lo mas optimizado pero anda, tenes que crear un array con numeros aleatorios segun las lineas que vos tengas el text1 para saber las lineas y tener cada una por separado usas la funcion Split(text1, vbCrLf) y eso te da un array de las lineas del text1 y despues mira el codigo.
Option Explicit
Private Sub Command1_Click()
Dim sLine() As String
Dim ArrAleatorio() As Long
Dim i As Long
Text2.Text = ""
sLine = Split(Text1, vbCrLf)
If UBound(sLine) > -1 Then
ArrAleatorio = GenerateRndArray(UBound(sLine))
For i = 0 To UBound(ArrAleatorio)
Text2.Text = Text2.Text & sLine(ArrAleatorio(i)) & vbCrLf
Next
End If
End Sub
Private Function GenerateRndArray(ByVal lMax As Long) As Long()
Dim TempArr() As Long
Dim lPos As Long
Dim RndNum As Long
Dim i As Long
Dim IsInArray As Boolean
If lMax = 0 Then
ReDim GenerateRndArray(0)
Exit Function
End If
ReDim TempArr(lMax)
For i = 0 To lMax
TempArr(i) = -1
Next
Randomize
Do
IsInArray = False
RndNum = CInt(Int((lMax + 1) * Rnd()))
For i = 0 To lPos
If TempArr(i) = RndNum Then
IsInArray = True
Exit For
End If
Next
If IsInArray = False Then
TempArr(lPos) = RndNum
lPos = lPos + 1
If lPos > lMax Then Exit Do
End If
Loop
GenerateRndArray = TempArr
End Function