Hola de nuevo:
El siguiente código funciona en Excel:
Código vb:
Ver originalPrivate Function CodigoControl(NS As Integer) As String
' Funcion que calcula y devuelve el código de Control
Dim N1 As Double, N2 As Double, acumulador As Double, x As Integer
Dim codicontrol As Integer, xifra As Integer
N1 = Int(NS / 100)
N2 = NS Mod 100
For x = 1 To N2
acumulador = acumulador + x
Next
N2 = acumulador * N1 * 13411
codicontrol = N2 Mod 9
xifra = N2 Mod 31
If xifra < 10 Then
lletra = "A"
ElseIf xifra >= 10 Or xifra < 19 Then
lletra = "B"
Else
lletra = "C"
End If
CodigoControl = codicontrol & lletra ' No es necesario Int(codicontrol) porque ya es entero
End Function
Private Sub CommandButton1_Click()
' Asignacion del Código de Control al socio nnnn introducido en F2
If CInt(Range("F2").Value) < 1000 Then
MsgBox ("Introduce un número superior a 1000")
Else
Range("F3").Value = CodigoControl(CInt(Range("F2").Value))
End If
End Sub
Private Sub CommandButton2_Click()
' Verificacion del Valor nnnn?? introducido en H2
If CodigoControl(CInt(Left$(Range("H2").Value, 4))) = Right$(Range("H2").Value, 2) Then
Range("H3").Value = "Correcto"
Else
Range("H3").Value = "Incorrecto"
End If
End Sub
Pienso que está haciendo lo que necesitas, compáralo con el tuyo para ver las diferencias piensa no obstante que en eso de la programación casi todos los caminos conducen a Roma, o sea que lo mismos resultados puedes conseguirlos de maneras similares, dependiendo de la imaginacion y enfoque de cada uno.
Saludos