Buenas erbuson, mira, despues de pensarlo un poco, la cosa quedaria asi no?
    
Código vb:
Ver originalSub socis2()
 
Dim NS, N1, N2, acumulador, x, codicontrol, xifra As Integer
Dim N3, lletra As String
 
NS = Range("F2").Value
N3 = Range("H2").Value
 
If NS < 1001 Then
    MsgBox ("Introduce un número superior a 1001")
End If
 
    
 
    N1 = Int(NS / 100)
    N2 = NS - (N1 * 100)
 
    acumulador = 0
 
For x = 1 To N2 Step 1
 
    acumulador = acumulador + x
 
Next
 
    N2 = acumulador * N1 * 13411
 
    codicontrol = (N2 / 9 - Int(N2 / 9)) * 9
 
    xifra = (N2 / 31 - Int(N2 / 31)) * 31
 
If xifra < 10 Then
    lletra = "A"
ElseIf xifra >= 10 Or xifra < 19 Then
    lletra = "B"
Else
    lletra = "C"
End If
 
    Range("F3").Value = NS & Int(codicontrol) & lletra
    
If N3 = Int(codicontrol) & lletra Then
 
    Range("H3").Value = "Correcto"
 
Else
 
    Range("H3").Value = "Incorrecto"
 
End If
 
End Sub
  
En caso de que fuera correcto, que más podria añadirle para que estubiera más a prueba de fallos?  
Cada vez me animo más con el tema :D, haber que puedo añadir :P 
Grácias :D