Это может сработать для вас:
Public notFirst As Boolean
Public rng As Range
Private Sub CommandButton3_Click()
If notFirst Then
If rng.Row = 104 Then
Exit Sub
Else
Set rng = rng.Offset(1)
End If
Else
Set rng = Range("A102")
notFirst = True
End If
Range("C8").Value = rng.Value
End Sub
Эти переменные Public
гарантируют, что при повторном нажатии кнопки последнее присвоенное значение все еще присутствует. Обратите внимание, что я бы не рекомендовал вышеупомянутый код делать то, что вы делаете.