Función personalizada

06/07/2010 - 06:24 por ElProfe | Informe spam
Amigos del foro:

Hace algun tiempo "KL" me indicó un código para una función
personalizada y era el siguiente:

Function DC(Numero As String) As Integer
Dim Mult As Variant, i As Integer, SumaProd As Double
Dim Digito As Integer, RES As Integer
Mult = Array(71, 67, 59, 53, 47, 43, 41, 37, 29, 23, 19, 17, 13,
7, 3)
For i = 1 To Len(Numero)
Digito = Mid(Numero, i, 1)
SumaProd = SumaProd + Digito * Mult(i - 1)
Next i
RES = SumaProd Mod 11
Select Case RES
Case 0, 1
DC = 0
Case 1
DC = 1
Case Else
DC = 11 - RES
End Select
End Function

El anterior código toma las dos matrices y las multiplica de la
siguiente manera:

Constantes: 71, 67, 59, 53, 47, 43, 41, 37, 29, 23, 19, 17, 13, 7,
3
Número dado: 8, 0, 0, 1, 9, 7, 2, 6, 8, 0, 0,
0, 0, 0, 0
Pruducto: 568, 0, 0, 53,423,301,82,222,232, 0, 0, 0, 0, 0, 0

Lo que realmente se pretende es que las multiplique de la siguiente
manera

Constantes: 71, 67, 59, 53, 47, 43, 41, 37, 29, 23, 19,
17, 13, 7, 3
Número dado: 0, 0, 0, 0, 0, 0, 8, 0, 0,
1, 9, 7, 2, 6, 8
Pruducto: 0, 0, 0, 0, 0, 0,328, 0, 0,
23,171,119, 26, 42, 24

Debo modificar la forma como la función lee el "número dado", ya que
las posiciones de la izquierda deben ser llenadas con ceros.

El resultado correcto (con la segunda opcion) es cuatro (4), pero
actualmente me está dando cero (0) porque el "número dado" se
justifica a la izquierda y no a la derecha como es correcto.

Anticipo mis agradecimientos a todos y desde luego a "KL" si mira mi
inquietud.

Cordial saludo,

ElProfe

Preguntas similare

Leer las respuestas

#1 L. Garcia
06/07/2010 - 08:42 | Informe spam
Hola:

Pon simplemente esto antes de procesar Numero, con tantos ceros como
posiciones tienes para multiplicar.

Numero = Format$(Val(Numero), "000000000")

Saludos

"ElProfe" escribió en el mensaje
news:
Amigos del foro:

Hace algun tiempo "KL" me indicó un código para una función
personalizada y era el siguiente:

Function DC(Numero As String) As Integer
Dim Mult As Variant, i As Integer, SumaProd As Double
Dim Digito As Integer, RES As Integer
Mult = Array(71, 67, 59, 53, 47, 43, 41, 37, 29, 23, 19, 17, 13,
7, 3)
For i = 1 To Len(Numero)
Digito = Mid(Numero, i, 1)
SumaProd = SumaProd + Digito * Mult(i - 1)
Next i
RES = SumaProd Mod 11
Select Case RES
Case 0, 1
DC = 0
Case 1
DC = 1
Case Else
DC = 11 - RES
End Select
End Function

El anterior código toma las dos matrices y las multiplica de la
siguiente manera:

Constantes: 71, 67, 59, 53, 47, 43, 41, 37, 29, 23, 19, 17, 13, 7,
3
Número dado: 8, 0, 0, 1, 9, 7, 2, 6, 8, 0, 0,
0, 0, 0, 0
Pruducto: 568, 0, 0, 53,423,301,82,222,232, 0, 0, 0, 0, 0, 0

Lo que realmente se pretende es que las multiplique de la siguiente
manera

Constantes: 71, 67, 59, 53, 47, 43, 41, 37, 29, 23, 19,
17, 13, 7, 3
Número dado: 0, 0, 0, 0, 0, 0, 8, 0, 0,
1, 9, 7, 2, 6, 8
Pruducto: 0, 0, 0, 0, 0, 0,328, 0, 0,
23,171,119, 26, 42, 24

Debo modificar la forma como la función lee el "número dado", ya que
las posiciones de la izquierda deben ser llenadas con ceros.

El resultado correcto (con la segunda opcion) es cuatro (4), pero
actualmente me está dando cero (0) porque el "número dado" se
justifica a la izquierda y no a la derecha como es correcto.

Anticipo mis agradecimientos a todos y desde luego a "KL" si mira mi
inquietud.

Cordial saludo,

ElProfe
Respuesta Responder a este mensaje
#2 ElProfe
06/07/2010 - 18:02 | Informe spam
Saludos "L. Garcia":

Simplemente "PERFECTO!"; ahora si corre bien y produce los resultados
correctos.

Agradezco tu colaboración y apoyo; muy amable de tuparte.

Con todo mi reconocimiento, recibe un cordial saludo,

ElProfe
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida