Access - toma de datos para cif

 
Vista:
sin imagen de perfil

toma de datos para cif

Publicado por jose maria (89 intervenciones) el 04/07/2013 11:06:42
hola, en un mensaje anterior ya resuelto, pedia para que se me ayudara con la toma de datos para el dni, ahora deseo algo igual para el cif......
basandome en ese mensaje
http://www.lawebdelprogramador.com/foros/Access/1385746-Toma_de_datos_para_dni_nif_nie.html

he intentado generar el codigo pero bamos, no me sale......
¿algien sabria como hacer para la toma y filtrado del cif?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

toma de datos para cif

Publicado por jose (830 intervenciones) el 04/07/2013 15:35:26
http://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal

El CIF se define originariamente en el Decreto 2423/19752 y ha sido modificado en varias ocasiones. La última modificación, antes de su derogación con efectos desde el 1 de enero de 2008, corresponde a la Orden de 3 de julio de 1998 que regula el código de identificación de las personas jurídicas y entidades en general.

El CIF consta de 9 caracteres. El primero (posición 1) es una letra que sigue los siguientes criterios:

A. Sociedades anónimas.
B. Sociedades de responsabilidad limitada.
C. Sociedades colectivas.
D. Sociedades comanditarias.
E. Comunidades de bienes.
F. Sociedades cooperativas.
G. Asociaciones.
H. Comunidades de propietarios en régimen de propiedad horizontal.
J. Sociedades civiles.
K. Formato antiguo.
L. Formato antiguo.
M. Formato antiguo.
N. Entidades no residentes.
P. Corporaciones locales.
Q. Organismos autónomos, estatales o no, y asimilados, y congregaciones e instituciones religiosas.
R. Congregaciones e instituciones religiosas (desde 2008, ORDEN EHA/451/2008)
S. Órganos de la Administración del Estado y comunidades autónomas
V. Sociedad Agraria de Transformación.
W. Establecimientos permanentes de entidades no residentes en España

A continuación se insertan otros ocho dígitos con las siguientes posiciones: las dos primeras indican la provincia, donde los identificadores o claves provinciales son:
Identificador Provincia
01 Álava
02 Albacete
03, 53, 54 Alicante
04 Almería
05 Ávila
06 Badajoz
07, 57 Islas Baleares
08, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68 Barcelona
09 Burgos
10 Cáceres
11, 72 Cádiz
12 Castellón
13 Ciudad Real
14, 56 Córdoba
15, 70 La Coruña
16 Cuenca
17, 55 Gerona
18 Granada
19 Guadalajara
20 Guipúzcoa
21 Huelva
22 Huesca
23 Jaén
24 León
25 Lérida
26 La Rioja
27 Lugo
28, 78, 79, 80, 81, 82, 83, 84, 85, 86 Madrid
29, 92, 93 Málaga
30, 73 Murcia
31, 71 Navarra
32 Orense
33, 74 Asturias
34 Palencia
35, 76 Las Palmas
36, 27, 94 Pontevedra
37 Salamanca
38, 75 Santa Cruz de Tenerife
39 Cantabria
40 Segovia
41, 90, 91 Sevilla
42 Soria
43, 77 Tarragona
44 Teruel
45 Toledo
46, 96, 97, 98 Valencia
47 Valladolid
48, 95 Vizcaya
49 Zamora
50, 99 Zaragoza
51 Ceuta
52 Melilla

Los cinco siguientes dígitos (posiciones 4 a 8) constituyen un número correlativo de inscripción de la organización en el registro provincial, y el último dígito (posición 9) es un código de control que puede ser un número o una letra :

Será una LETRA si la clave de entidad es K, Q ó S.
Será un NUMERO si la entidad es A, B, E ó H.
Para otras claves de entidad: el dígito podrá ser tanto número como letra.

Las operaciones para calcular el dígito de control se realizan sobre los siete dígitos centrales y son las siguientes:

Sumar los dígitos de la posiciones pares. Suma = A
Para cada uno de los dígitos de la posiciones impares, multiplicarlo por 2 y sumar los dígitos del resultado.

Ej.: ( 8 * 2 = 16 --> 1 + 6 = 7 )

Acumular el resultado. Suma = B
Sumar A + B = C
Tomar sólo el dígito de las unidades de C. Lo llamaremos dígito E.
Si el dígito E es distinto de 0 lo restaremos a 10. D=10-E. Esta resta nos da D. Si no, si el dígito E es 0 y si el dígito de control ha de ser numérico entonces D=0 y no hacemos resta.
A partir de D ya se obtiene el dígito de control. Si ha de ser numérico es directamente D y si se trata de una letra se corresponde con la relación:

J = 0, A = 1, B = 2, C= 3, D = 4, E = 5, F = 6, G = 7, H = 8, I = 9

Ejemplo para el CIF A58818501
Utilizamos los siete dígitos centrales = 5881850

Sumamos los dígitos pares: A = 8 + 1 + 5 = 14
Posiciones impares:

5 * 2 = 10 -> 1 + 0 = 1
8 * 2 = 16 -> 1 + 6 = 7
8 * 2 = 16 -> 1 + 6 = 7
0 * 2 = 0 -> = 0

Sumamos los resultados: B = 1 + 7 + 7 + 0 = 15
Suma parcial: C = A + B = 14 + 15 = 29
El dígito de las unidades de C es 9.
Se lo restamos a 10 y nos da: D = 10 - 9 = 1
Si el dígito de control ha de ser un número es 1 y si ha de ser una letra es la "A"

Rutinas de cálculo

Como esta parte de obtener el dígito de control puede parecer un poco más complicada, a continuación damos diversas implementaciones.



Abreviaturas de las sociedades

El CIF debe coincidir con la abreviación final del nombre de la empresa según la siguiente relación: ( listado parcial de Sociedades Civiles y Mercantiles en España )
abreviación Tipo de sociedad
SL Sociedad Limitada
SLU Sociedad Limitada Unipersonal
SLL Sociedad Limitada Laboral
SLNE Sociedad Limitada Nueva Empresa
SA Sociedad Anónima
SAL Sociedad Anónima Laboral
SAU Sociedad Anónima Unipersonal
SAE Sociedad Anónima Española
CB Comunidad de Bienes
SC Sociedad Civil
SRL Sociedad de Responsabilidad Limitada
SCP Sociedad Civil Particular/Privada
UTE Unión Temporal de Empresas
COOP Sociedad Cooperativa
SCA Sociedad Cooperativa Andaluza
AEIE Agrupación Europea de Interés Económico
SCI Sociedad Cooperativa Industrial
AIE Agrupación de Interés Económico
SCL Sociedad Cooperativa Limitada
SGR Sociedad de Garantía Recíproca
SAT Sociedad Agraria de Transformación
SI Sociedad Irregular
SAD Sociedad Anónima Deportiva
SRC Sociedad Regular Colectiva
SEE Sucursal en España
SENC Sociedad en Comandita

Para el código de países extranjeros se usan, a partir del 1 de enero de 1981, los códigos de la Orden de 4 de agosto de 1980,4 así como sus diferentes correcciones (BOE NUM. 272, de 12 de noviembre de 1980,5 BOE núm. 298, de 12 de diciembre de 1980,6 Circular 860/1981, de 30 de junio.7 )
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

toma de datos para cif

Publicado por jose (830 intervenciones) el 04/07/2013 18:37:26
http://mvp-access.es/softjaen/vbnet/funciones/dc/sjvbnetfun01.htm


Cómo obtener el Código de Identificación Fiscal (CIF)
Por Enrique Martínez Montejo
[Microsoft Most Valuable Professional - Visual Basic]
Última revisión: 04/09/2010


Hasta la entrada en vigor del Real Decreto 1065/2007, de 27 de julio, en España se venía utilizando el Código de Identificación Fiscal (CIF) para identificar de manera única a entidades con o sin personalidad jurídica propia distintas de personas físicas, en sus relaciones de naturaleza o con transcendencia tributaria entre Organismos públicos del Estado, empresas y particulares.

A partir del día 1 de enero de 2008, fecha de entrada en vigor del Real Decreto mencionado, desaparece la denominación de Código de Identificación Fiscal para sustituirse por la de Número de Identificación Fiscal (NIF), tal y como así establece el Artículo 18.1 del Real Decreto 1065/2007, número éste último que hasta la fecha indicada era utilizado únicamente para identificar a las personas físicas.

El que se utilice una misma denominación para identificar tanto a personas físicas como jurídicas, no significa que el formato de los números CIF existentes se sustituyan por el formato de los números NIF. Ambos números siguen utilizando su mismo formato original, por tanto, continúan utilizando el mismo algoritmo de cálculo de dígito de control: uno para el cálculo del NIF de las personas físicas, que también se utiliza para el cálculo del dígito de control de las personas extranjeras residentes en España (lo que se conoce como Número de Identificación de Extranjero), y otro para el cálculo del NIF de las personas jurídicas y otras entidades con o sin personalidad jurídica propia, lo que antes del día 1-1-2008 se conocía como CIF, distinción ésta que en mi opinión personal deberíamos de seguir los programadores para seguir diferenciando la función de cálculo del dígito de control del NIF de las personas físicas, lo que se conoce como cálculo del NIF, y la función de cálculo del dígito de control del NIF de las personas jurídicas, lo que se conoce como cálculo del CIF, que es la denominación que voy a seguir utilizando en éste artículo.

El Código de Identificación Fiscal (CIF) está formado por una cadena alfanumérica, que necesariamente deberá de comenzar por una letra, seguida de siete dígitos numéricos, y que puede acabar bien en una letra o en un número, dependiendo del ente jurídico del que se trate. Por ejemplo, el código B12345674 corresponderá a una Sociedad de Responsabilidad Limitada, y el código S1454158E, bien podría pertenecer a cualquier órgano de la Administración del Estado.

Como he comentado anteriormente, el CIF deberá comenzar con una letra que asigna directamente la Agencia Estatal de Administración Tributaria, con arreglo al tipo de Sociedad u Organismo que lo solicite. De acuerdo con las modificaciones introducidas por la Orden EHA/451/2008, de 20 de febrero, las letras iniciales se resumen en la siguiente tabla:
Letra Tipos de entidades antes del 1 de julio de 2008 Tipos de entidades a partir del 1 de julio de 2008
A Sociedades Anónimas Sociedades Anónimas
B Sociedades de Responsabilidad Limitada Sociedades de Responsabilidad Limitada
C Sociedades Colectivas Sociedades Colectivas
D Sociedades Comanditarias Sociedades Comanditarias
E Comunidades de Bienes Comunidades de Bienes y herencias yacentes
F Sociedades Cooperativas Sociedades Cooperativas
G Asociaciones y otros tipos no definidos Asociaciones
H Comunidades de propietarios en régimen de propiedad horizontal Comunidades de propietarios en régimen de propiedad horizontal
J Sociedades civiles, con o sin personalidad jurídica
P Corporaciones Locales Corporaciones Locales
Q Organismos Autónomos y asimilados, y Congregaciones e instituciones religiosas Organismos públicos
R Congregaciones e instituciones religiosas
S Órganos de la Administración del Estado y de las Comunidades Autónomas Órganos de la Administración del Estado y de las Comunidades Autónomas
U Unión Temporales de Empresas
V Otros tipos no definidos en el resto de claves
N Entidades no residentes Entidades extranjeras
W Establecimientos permanentes de entidades no residentes en España

También existen otros NIF de personas físicas que utilizan el mismo algoritmo de cálculo del CIF, y se trata de los siguiente colectivos:
Letra Tipos de colectivos
K Españoles menores de 14 años
L Españoles residentes en el extranjero sin DNI
M NIF que otorga la Agencia Tributaria a extranjeros que no disponen de NIE (Número Identificador de Extranjero)

Estos últimos NIF de personas físicas corresponden a formatos antiguos de NIF. Actualmente, el dígito de control de los NIF correspondientes a las letras K, L y M, se calcula de idéntica manera que los restantes NIF de las personas físicas, por lo tanto, le podrá servir la función GetDcNif que podrá encontrar en el ejemplo Cómo obtener un Número de Identificación Fiscal (NIF) o de Extranjero (NIE). El motivo de incluir las letras K, L y M en la función que muestro en el presente artículo, únicamente es por si está interesado en calcular un dígito de control con formato antiguo perteneciente a los colectivos indicados.

En el presente ejemplo, vamos a implementar una función genérica para el cálculo del último carácter del CIF (el número o la letra correspondiente), lo que se suele denominar el Dígito de Control, por lo que únicamente deberemos pasar a la función los ochos primeros caracteres del CIF, aunque tampoco pasará nada si se pasan los nueve caracteres del CIF. Podrá conocer el algoritmo de cálculo leyendo los correspondientes comentarios incluidos en el procedimiento.

Imports System.Text.RegularExpressions

Public Function GetDcCif(ByVal nif As String) As Char

'*******************************************************************
' Nombre: GetDcCif
' por Enrique Martínez Montejo
'
' Finalidad: Obtener el Dígito de Control de un NIF correspondiente
' a personas jurídicas y otras entidades con o sin
' personalidad jurídica.
'
' Entradas:
' nif: String. El NIF cuyo dígito de control se desea obtener.
'
' Resultados:
' String: La letra o el número correspondiente al NIF.
'
'*******************************************************************

' Pasamos el NIF a mayúscula a la vez que eliminamos todos los
' carácteres que no sean números o letras. Note que no incluyo
' la letra I, porque si bien no puede aparecer como carácter
' inicial de un NIF, sí puede ser un dígito de control válido,
' lo que no sucede con las letras O y T.
'
Dim re As New Regex("([^A-W0-9]|[OT]|[^\w])", RegexOptions.IgnoreCase)

nif = re.Replace(nif, String.Empty).ToUpper()

' Para calcular el CIF, se debe de haber pasado un máximo
' de nueve caracteres a la función: una letra válida (que
' necesariamente deberá de estar comprendida en el intervalo
' ABCDEFGHJKLMNPQRSUVW), siete números, y el dígito de control,
' que puede ser un número o una letra, dependiendo de la entidad
' a la que pertenezca el NIF.
'
' En el patrón de la expresión regular, defino dos grupos en el
' siguiente orden:
' 1º) 1 letra + 7 u 8 dígitos.
' 2º) 1 letra + 7 dígitos + 1 letra.
'
' Note que en el siguiente patrón, no incluyo la letra I como
' carácter de inicio válido del NIF.
'
re = New Regex("(^[A-HJ-W]\d{7,8}$)|(^[A-HJ-W]\d{7}[A-Z]$)")

If (Not (re.IsMatch(nif))) Then Return Nothing

Try
' Guardo el último carácter pasado, siempre que
' el NIF disponga de nueve caracteres.
'
Dim lastChar As Char = Nothing
If (nif.Length = 9) Then lastChar = nif.Chars(8)

Dim sumaPar, sumaImpar As Int32

' A continuación, la cadena debe tener 7 dígitos.
'
Dim digits As String = nif.Substring(1, 7)

For n As Int32 = 0 To digits.Length - 1 Step 2

If (n < 6) Then
' Sumo las cifras pares del número que se corresponderá
' con los caracteres 1, 3 y 5 de la variable «digits».
'
sumaImpar += CInt(CStr(digits.Chars(n + 1)))
End If

' Multiplico por dos cada cifra impar (caracteres 0, 2, 4 y 6).
'
Dim dobleImpar As Int32 = 2 * CInt(CStr(digits.Chars(n)))

' Acumulo la suma del doble de números impares.
'
sumaPar += (dobleImpar Mod 10) + (dobleImpar \ 10)

Next

' Sumo las cifras pares e impares.
'
Dim sumaTotal As Int32 = sumaPar + sumaImpar

' Me quedo con la cifra de las unidades y se la resto a 10, siempre
' y cuando la cifra de las unidades sea distinta de cero.
'
sumaTotal = (10 - (sumaTotal Mod 10)) Mod 10

Dim characters() As Char = _
{"J"c, "A"c, "B"c, "C"c, "D"c, "E"c, "F"c, "G"c, "H"c, "I"c}

Dim dc As Char = characters(sumaTotal)

' Devuelvo el Dígito de Control dependiendo del primer carácter
' del NIF pasado a la función.
'
Dim firstChar As Char = nif.Chars(0)

Select Case firstChar
Case "N"c, "P"c, "Q"c, "R"c, "S"c, "W"c, "K"c, "L"c, "M"c
' NIF de entidades cuyo dígito de control se corresponde
' con una letra. Se incluyen las letras K, L y M porque
' el cálculo del dígito de control es el mismo que para
' el CIF.
'
' Al estar los índices de los arrays en base cero, el primer
' elemento del array se corresponderá con la unidad del número
' 10, es decir, el número cero.
'
Return characters(sumaTotal)

Case "C"c
If ((lastChar = CStr(sumaTotal)) OrElse (lastChar = dc)) Then
' Devuelvo el dígito de control pasado, que
' puede ser un número o una letra.
Return lastChar

Else
' Devuelvo la letra correspondiente al cálculo
' del dígito de control del NIF.
Return dc

End If

Case Else
' NIF de las restantes entidades, cuyo dígito de control es un número.
'
Return CChar(CStr(sumaTotal))

End Select

Catch
' Cualquier excepción producida, devolverá Nothing.
'
Return Nothing

End Try

End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

toma de datos para cif

Publicado por jose maria (89 intervenciones) el 09/07/2013 11:18:31
hola, perdon por la tardanza, ya que estaba probando codigo, aber, vallamos por partes......
el codigo que me as puesto jose, si copio y pego en la parte del codigo del access da error (me sale en rojo estas lineas)=

Dim re As New Regex("([^A-W0-9]|[OT]|[^\w])", RegexOptions.IgnoreCase)
nif = re.Replace(nif, String.Empty).ToUpper()
re = New Regex("(^[A-HJ-W]\d{7,8}$)|(^[A-HJ-W]\d{7}[A-Z]$)")
If (Not (re.IsMatch(nif))) Then Return Nothing
Dim lastChar As Char = Nothing
Dim digits As String = nif.Substring(1, 7)
For n As Int32 = 0 To digits.Length - 1 Step 2
sumaImpar += CInt(CStr(digits.Chars(n + 1)))
Dim dobleImpar As Int32 = 2 * CInt(CStr(digits.Chars(n)))
sumaPar += (dobleImpar Mod 10) + (dobleImpar \ 10)
Dim sumaTotal As Int32 = sumaPar + sumaImpar
Dim characters() As Char = _
{"J"c, "A"c, "B"c, "C"c, "D"c, "E"c, "F"c, "G"c, "H"c, "I"c}
Dim dc As Char = characters(sumaTotal)
Dim firstChar As Char = nif.Chars(0)
Case "N"c, "P"c, "Q"c, "R"c, "S"c, "W"c, "K"c, "L"c, "M"c
Return characters(sumaTotal)
Case "C"c
If ((lastChar = CStr(sumaTotal)) OrElse (lastChar = dc)) Then
Return lastChar
Return dc
Return CChar(CStr(sumaTotal))
Return Nothing
End Try


por otra parte la informacion de que es el cif la busque en la wiki, y partiendo de eso yo he generado un codigo que me gustaria me ayudarais a terminar o mejorar ya que yo ya tengo la cabeza liada.....
en el formulario de prueba solo tengo un cuadro de texto con la sigiente mascara de entrada....
>L0000000A, luego en el codigo de este tengo esto:


Private Sub cif_KeyPress(KeyAscii As Integer)
Const CarnoValidos = "0123456789IÑOTUXYZ"
Const letrafinal = "KQS"
Const numerofinal = "ABEH"
Const otrasletras = "CDFGJLMNPRVW"
Dim DC As String * 1
Dim final As String
'Si estamos en la primera posición y se pulsa una tecla de carácter
If Me.cif.SelStart = 0 And KeyAscii > 31 Then
'Si es uno de los caracteres NO válidos
If Not InStr(1, CarnoValidos, Chr(KeyAscii)) = 0 Then
'Anulamos la pulsación
KeyAscii = 0
MsgBox "Caracter no Valido"
End If

'analizamos que tipo de digito control DC tendra el cif
If Not InStr(1, letrafinal, Chr(KeyAscii)) = 0 Then MsgBox " CIF terminara en letra": final = 1
If Not InStr(1, numerofinal, Chr(KeyAscii)) = 0 Then MsgBox " CIF terminara en numero": final = 0
If Not InStr(1, otrasletras, Chr(KeyAscii)) = 0 Then MsgBox " no sabemos como acabara el CIF": final = 2
End If
'MsgBox "variable del DC=" & final
'analizamos el ultimo digito
If Me.cif.SelStart = 8 And KeyAscii > 48 Or KeyAscii < 57 Then
'Calculamos el digito control por medio de una función
DC = CalculoDigitoControl(Left(Me.cif.Text, 8))
'DC = CalculoDigitoControl
'MsgBox "vemos el DC" & DC
'Si la letra no coincide con la que hemos pulsado
' If DC <> UCase(Chr(KeyAscii)) Then
'Anulamos la pulsación

' MsgBox "Letra no valida, deberia ser la " & Letra, vbInformation
' KeyAscii = 0

End If

'If Me.cif.SelStart = 0 And KeyAscii = 75 Or KeyAscii = 81 Or KeyAscii = 83 Then
'If final = 0 Then
'If final = 1 Then
'If final = 2 Then
'End If

End Sub


y luego esta otra parte

Private Function CalculoDigitoControl(cif As String) As String
MsgBox "empieza la funcion"

Dim nCIF As Long

Dim nCIFParA As Long
Dim nCIFParB As Long
Dim nCIFParC As Long

Dim nCIFImparA As Long
Dim nCIFImparB As Long
Dim nCIFImparC As Long
Dim nCIFImparD As Long

Dim sumapar As Long
Dim sumaimpar As Long
Dim sumaparcial As Long
Dim valorsumaparcial As Long
Dim valorfinal As Long

Dim mulA As Long
Dim mulB As Long
Dim mulC As Long
Dim mulD As Long

Dim valorA As Long
Dim valorB As Long
Dim sumamulA As Long

Dim valorC As Long
Dim valorD As Long
Dim sumamulB As Long

Dim valorE As Long
Dim valorF As Long
Dim sumamulC As Long

Dim valorG As Long
Dim valorH As Long
Dim sumamulD As Long

'Estas son las letras que corresponden a los 23 restos
Const letras = "ABCDEFGHJKLMNPQRSVW"

'tomamos ejemplo de cif A58818501
'cogemos los digitos desde el 2 hasta el 8
MsgBox "cogemos los digitos desde el 2 hasta el 8"
MsgBox Mid(cif, 2, 1)
MsgBox Mid(cif, 3, 1)
MsgBox Mid(cif, 4, 1)
MsgBox Mid(cif, 5, 1)
MsgBox Mid(cif, 6, 1)
MsgBox Mid(cif, 7, 1)
MsgBox Mid(cif, 8, 1)

'Asignamos el valor numérico a los dígitos pares que son segun ejemplo A = 8 B= 1 C= 5
MsgBox "Asignamos el valor numérico a los dígitos pares"
nCIFParA = Val(Mid(cif, 3, 1))
nCIFParB = Val(Mid(cif, 5, 1))
nCIFParC = Val(Mid(cif, 7, 1))
MsgBox "numero par 1:" & nCIFParA
MsgBox "numero par 2:" & nCIFParB
MsgBox "numero par 3:" & nCIFParC
'sumamos estos valores
MsgBox "sumamos estos valores"
sumapar = nCIFParA + nCIFParB + nCIFParC
MsgBox "la suma de los tres numeros pares=" & sumapar

'Asignamos el valor numérico a los dígitos impares que son segun ejemplo A = 5 B= 8 C= 8 D= 0
MsgBox "Asignamos el valor numérico a los dígitos impares"
nCIFImparA = Val(Mid(cif, 2, 1))
nCIFImparB = Val(Mid(cif, 4, 1))
nCIFImparC = Val(Mid(cif, 6, 1))
nCIFImparD = Val(Mid(cif, 8, 1))
MsgBox "numero impar 1:" & nCIFImparA
MsgBox "numero impar 2:" & nCIFImparB
MsgBox "numero impar 3:" & nCIFImparC
MsgBox "numero impar 4:" & nCIFImparD

'multiplicamos cada uno de ellos por dos
MsgBox "multiplicamos cada uno de ellos por dos"
mulA = nCIFImparA * 2
mulB = nCIFImparB * 2
mulC = nCIFImparC * 2
mulD = nCIFImparD * 2
MsgBox "numero impar 1:" & mulA
MsgBox "numero impar 2:" & mulB
MsgBox "numero impar 3:" & mulC
MsgBox "numero impar 4:" & mulD

'de cada uno de estos resultados de la multiplicacion,extraemos y sumamos sus digitos. supongamos que esto es=11, entonces la suma seria 1+1=2
MsgBox "de cada uno de estos resultados de la multiplicacion,extraemos y sumamos sus digitos"
valorA = Val(Mid(mulA, 1, 1))
valorB = Val(Mid(mulA, 2, 1))
sumamulA = valorA + valorB


valorB = Val(Mid(mulB, 1, 1))
valorC = Val(Mid(mulB, 2, 1))
sumamulB = valorB + valorC


valorD = Val(Mid(mulC, 1, 1))
valorE = Val(Mid(mulC, 2, 1))
sumamulC = valorD + valorE

valorF = Val(Mid(mulD, 1, 1))
valorG = Val(Mid(mulD, 2, 1))
sumamulD = valorF + valorG
MsgBox "suma total 1:" & sumamulA & " total 2:" & sumamulB & " total 3:" & sumamulC & " total 4:" & sumamulD

'ahora sumamos la suma de estos digitos....
sumaimpar = sumamulA + sumamulB + sumamulC + sumamulD
MsgBox "ahora sumamos la suma de estos digitos....que es =" & sumaimpar

'sumamos las dos partes, sumapar y sumaimpar
sumaparcial = sumapar + sumaimpar
MsgBox "sumamos las dos partes, sumapar y sumaimpar=" & sumaparcial

'ahora cojemos el segundo digito de esta suma
valorsumaparcial = Val(Mid(sumaparcial, 2, 1))
MsgBox "ahora cojemos el segundo digito de esta suma=" & valorsumaparcial

'ahora esto se lo restamos a 10
valorfinal = 10 - valorsumaparcial
MsgBox "ahora esto se lo restamos a 10,=" & valorfinal
MsgBox "se acabo la funcion"
End Function

lo que no consigo es una vez que se llama a la funcion y calcula ese digito de control es que el el codigo de arriva termine su ejecucion:
1) verificando que este bien introducido el cif ya sea una letra o un numero..... y si no esta que me lo indique......
gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar