Boa Noite Mauro, não sei se está necessitando ainda,mas.. Experimente:
sResult = Application.WorksheetFunction.VLookup(Application.WorksheetFunction.RandBetween(1, lUltimaLinhaAtiva), Sheets("lista").Range("A:B"), 2, 0)
Public Sub AleatorioTeste()
Dim lUltimaLinhaAtiva As Long
Dim sResult As String
Application.Volatile
lUltimaLinhaAtiva = Worksheets("Lista").Cells(Worksheets("Lista").Rows.Count, 2).End(xlUp).Row
For i = 1 To 5
Range("D7").Formula = "=VLOOKUP(RANDBETWEEN(1," & lUltimaLinhaAtiva & "),Lista!A:B,2,0)"
'Pretendo armazenar a Variavel sResult em vez de jogar para a planilha
sResult = Application.WorksheetFunction.VLookup(Application.WorksheetFunction.RandBetween(1, lUltimaLinhaAtiva), Sheets("lista").Range("A:B"), 2, 0)
Next i
Application.ScreenUpdating = True
End Sub
Se desejar armazenar as 5 'rodadas" e necessaro definir sResult como array e ir "carregando" os elementos individuais
Ficara algo =/-assim:
Public Sub AleatorioTesteArray()
Dim lUltimaLinhaAtiva As Long
Dim sResult(1 To 5) As String
Application.Volatile
lUltimaLinhaAtiva = Worksheets("Lista").Cells(Worksheets("Lista").Rows.Count, 2).End(xlUp).Row
For i = 1 To 5
Range("D7").Formula = "=VLOOKUP(RANDBETWEEN(1," & lUltimaLinhaAtiva & "),Lista!A:B,2,0)"
'Pretendo armazenar a Variavel sResult em vez de jogar para a planilha
sResult(i) = Application.WorksheetFunction.VLookup(Application.WorksheetFunction.RandBetween(1, lUltimaLinhaAtiva), Sheets("lista").Range("A:B"), 2, 0)
Next i
Application.ScreenUpdating = True
MsgBox sResult(1) & ", " & sResult(2) & ", " & sResult(3) & ", " & sResult(4) & ", " & sResult(5)
End Sub
Postado : 22/10/2019 7:31 pm