Hola!
La forma de buscar los primos sí que me ha parecido muy elegante, pero le he visto un fallo...
Por ejemplo, para txtN_numero.Text = 5 y txtN_numero = 6, devuelve "11", cuando debería devolver "18" (1 + 2 + 3 + 5 + 7) y "29", respectivamente (+11). Lo que está haciendo es sumar los primos que encuentra entre los n primeros números, no los n primeros primos.
Si lo he entendido bien, sería algo así (me he basado en tu mismo código):
Código:
Public Function SumaDePrimos(ByVal TotalPrimos As Long) As Long
Dim Suma As Long
Dim PrimosEncontrados As Long
Dim i As Long
Dim j As Long
If TotalPrimos > 0 Then Suma = 1
i = 1
PrimosEncontrados = 1
Do While PrimosEncontrados < TotalPrimos
i = i + 1
For j = 2 To i
If (i Mod j = 0) Then
If j = i Then
Suma = Suma + i
PrimosEncontrados = PrimosEncontrados + 1
End If
Exit For
End If
Next j
Loop
SumaDePrimos = Suma
End Function