¡Jajajaja! ¡Menudo lío se ha montado!
Y eso que estamos con el reto 1.
Creo que lo idóneo sería que le pudieramos pasar el número por parámetro, es más genérico.
Y la función debe funcionar
SIEMPRE.
Aquí dejo unos ejemplos de llamadas que deben de devolver resultado correcto:
Debug.Print Euler1(1000) '-> 233168
Debug.Print Euler1(0) '-> 0
Debug.Print Euler1(-983) '-> 0
Aquí dejo mi forma de hacerlo:
Public Static Function PE_1(ByVal lNum As Long) As Long
Dim Q As Long
If lNum And &H80000000 Then Exit Function
lNum = lNum - 1
For Q = 3 To lNum Step 3
PE_1 = PE_1 + Q
Next Q
For Q = 5 To lNum Step 5
If Q Mod 3 Then
PE_1 = PE_1 + Q
End If
Next Q
End Function
La próxima vez pondré el reto traducido, y el resultado que debe retornar para evitar confusiones.
DoEvents!