Вы можете попробовать что-то вроде следующего.Это сгенерирует случайное число от 2 до 50, проверит, использовалось ли оно ранее (путем сравнения со словарем использованных значений), а затем перейдите.Хотя я не совсем уверен, почему вы хотите это сделать.
Dim UsedNumber As Object
Dim RndNumber As Long, MinNumber as long, MaxNumber as long
Dim j As Long
MinNumber = 2
MaxNumber = 50
Set UsedNumber = CreateObject("Scripting.Dictionary")
With ie
.Visible = True
For j = MinNumber To MaxNumber
Do
RndNumber = Int((MaxNumber - MinNumber + 1) * Rnd + MinNumber)
Loop While UsedNumber.exists(RndNumber)
UsedNumber.Add RndNumber, RndNumber
Debug.Print RndNumber
mylink = wks.Cells(RndNumber, 2).Value
.Navigate mylink
Next j
End With