Código para personalizar una función

14/02/2006 - 16:13 por ElProfe | Informe spam
Bueno amigos, como lo mio no es el código VBA, llegó el momento de
pedirles su ayuda! por favor, espero contar con ella.

Requiero personalizar una función que me permita calcular el dígito
de chequeo (o verificación) de un entero, positivo, de 15 cifras, cuyo
algoritmo es el siguiente (considerando las posiciones del entero de
izquierda a derecha):
+ ( Posición 01 * 71)
+ ( Posición 02 * 67)
+ ( Posición 03 * 59)
+ ( Posición 04 * 53)
+ ( Posición 05 * 47)
+ ( Posición 06 * 43)
+ ( Posición 07 * 41)
+ ( Posición 08 * 37)
+ ( Posición 09 * 29)
+ ( Posición 10 * 23)
+ ( Posición 11 * 19)
+ ( Posición 12 * 17)
+ ( Posición 13 * 13)
+ ( Posición 14 * 07)
+ ( Posición 15 * 03)
=SumatoriaDeProductos / 11
=CalculoDeResiduo (SumatoriaDeProductos / 11)
Si (CalculoDeResiduo = 0 entonces 0)
Si (CalculoDeResiduo = 1 entonces 1)
Si (y(CalculoDeResiduo <> 0,CalculoDeResiduo <> 1) entonces (11 -
CalculoDeResiduo))

Por su amable atención y ayuda, reciban mis agradecimientos
anticipados.

Saludos,

ElProfe

Preguntas similare

Leer las respuestas

#21 ElProfe
18/02/2006 - 14:25 | Informe spam
KL y Cristian, gracias por su ayuda;

Todo funcionó muy bien; fórmulas perfectas y codigo VBA perfecto!

Agradezco mucho su interés, sin el cual hubiera sido imposible hacerlo
tan sencillo como quedó.

Gracias y disculpen tanta insistencia

Cordial saludo,

Manuel
(ElProfe)
Respuesta Responder a este mensaje
#22 ElProfe
18/02/2006 - 14:45 | Informe spam
KL;
Por favor, me podrías indicar, ¿cual es la diferencia entre una
"Función diseñada por usuario" y una "Función complemento [.xla]"?
¿por ejemplo, tu codigo anterior se puede volver un complemento?
Gracias y saludos.
Manuel
(ElProfe)
Respuesta Responder a este mensaje
#23 KL
18/02/2006 - 19:44 | Informe spam
Hola Manuel,

No se si el termino "Función complemento [.xla]" es correcto (si es que existe). En todo caso, entiendo que una "función diseñada
por usuario" puede estar dentro de un modulo VBA de un archivo *.xls o *.xla. Los macros/funciones se suelen colocar dentro de un
*.xls para ser ejecutados/disponibles desde el mismo archivo cuando ese este abierto. Lo s complementos (*.xla) se instalan una vez
y a partir de entonces se cargan automaticamente (e invisiblemente) cada vez que se inicia Excel por lo cual el codigo que contienen
esta disponible para todos los archivos abiertos.
Contestando tu pregunta, mi codigo si que se puede usar dentro de un *.xla. Para ello haz lo siguiente:

- crea un nuevo archivo en blanco
- haz clic-derecho sobre el pequeno logo de Excel a la izquierda del menu Archivo
- elige la opcion 'Ver Codigo' para abrir el editor VBA.
- una vez en el Editor VBA, ve al menu Insertar>Modulo...
- en la ventana mas grande a la derecha pega el siguiente codigo:

'inicio
Option Base 1
' esta instruccion hace que el primer elemento en todas
' las matrices dinamicas del modulo sea 1 en vez de 0

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

- pulsa Alt+F11 para volver a la hoja.
- ve al menu Archivo>Guardar como...
- elige la carpeta donde quieres poner el complemento
- escribe el nombre del complemento
- en la casilla 'Cuardar como tipo:' elige la opcion 'Complemento de Microsoft Office Excel (*.xla)'
- pulsa 'Guardar'
- cierra el archivo
- ve al menu Herramientas>Complementos...
- pulsa 'Examinar'
- encuentra tu archivo recien guardado
- pulsa 'Aceptar'
- asegurate que el complemento este en la lista y tildado
- pulsa 'Aceptar'

Puedes colocar mas funciones/macros en el mismo complemento. Otra opcion podria ser la de usar Personal.xls - haz una busqueda en
este grupo a traves de Google.Grupos para ver las conversaciones que hay sobre el tema.

Saludos,
KL



"ElProfe" wrote in message news:
KL;
Por favor, me podrías indicar, ¿cual es la diferencia entre una
"Función diseñada por usuario" y una "Función complemento [.xla]"?
¿por ejemplo, tu codigo anterior se puede volver un complemento?
Gracias y saludos.
Manuel
(ElProfe)
Respuesta Responder a este mensaje
#24 ElProfe
18/02/2006 - 20:40 | Informe spam
Hola KL;

Gracias por tu disertación; bastante claro lo expuesto y sobra decir,
de mucha ayuda.

Además, como siempre, tienes razón; el termino "Función complemento
[.xla]" no es correcto y por lo tanto no debe existir, pues realmente
se trata es de "Un complemento"

Gracias nuevamente.

Cordial saludo,

Manuel (ElProfe)

pd: Miraste el archivo del juego? creo que tiene password (que
olvidé), pero estoy seguro que para ti eso no será problema.


KL ha escrito:
Hola Manuel,

No se si el termino "Función complemento [.xla]" es correcto (si es que existe). En todo caso, entiendo que una "función diseñada por usuario" puede estar dentro de un modulo VBA de un archivo *.xls o *.xla. Las macros/funciones se suelen colocar dentro de un *.xls para ser ejecutadas/disponibles desde el mismo archivo cuando ese este abierto. Los complementos (*.xla) se instalan una vez y a partir de entonces se cargan automaticamente (e invisiblemente) cada vez que se inicia Excel, por lo cual el codigo que contienen esta disponible para todos los archivos abiertos.
Contestando tu pregunta, mi codigo si que se puede usar dentro de un *.xla; para ello has lo siguiente:
- crea un nuevo archivo en blanco
- haz clic-derecho sobre el pequeno logo de Excel a la izquierda del menu Archivo
- elige la opcion 'Ver Codigo' para abrir el editor VBA.
- una vez en el Editor VBA, ve al menu Insertar>Modulo...
- en la ventana mas grande a la derecha pega el siguiente codigo:

'inicio
Option Base 1
' esta instruccion hace que el primer elemento en todas
' las matrices dinamicas del modulo sea 1 en vez de 0

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

- pulsa Alt+F11 para volver a la hoja.
- ve al menu Archivo>Guardar como...
- elige la carpeta donde quieres poner el complemento
- escribe el nombre del complemento
- en la casilla 'Cuardar como tipo:' elige la opcion 'Complemento de Microsoft Office Excel (*.xla)'
- pulsa 'Guardar'
- cierra el archivo
- ve al menu Herramientas>Complementos...
- pulsa 'Examinar'
- encuentra tu archivo recien guardado
- pulsa 'Aceptar'
- asegurate que el complemento este en la lista y tildado
- pulsa 'Aceptar'

Puedes colocar mas funciones/macros en el mismo complemento. Otra opcion podria ser la de usar Personal.xls - haz una busqueda en este grupo a traves de Google.Grupos para ver las conversaciones que hay sobre el tema.
Saludos,
KL
Respuesta Responder a este mensaje
#25 ElProfe
18/02/2006 - 20:40 | Informe spam
Hola KL;

Gracias por tu disertación; bastante claro lo expuesto y sobra decir,
de mucha ayuda.

Además, como siempre, tienes razón; el termino "Función complemento
[.xla]" no es correcto y por lo tanto no debe existir, pues realmente
se trata es de "Un complemento"

Gracias nuevamente.

Cordial saludo,

Manuel (ElProfe)

pd: Miraste el archivo del juego? creo que tiene password (que
olvidé), pero estoy seguro que para ti eso no será problema.


KL ha escrito:
Hola Manuel,

No se si el termino "Función complemento [.xla]" es correcto (si es que existe). En todo caso, entiendo que una "función diseñada por usuario" puede estar dentro de un modulo VBA de un archivo *.xls o *.xla. Las macros/funciones se suelen colocar dentro de un *.xls para ser ejecutadas/disponibles desde el mismo archivo cuando ese este abierto. Los complementos (*.xla) se instalan una vez y a partir de entonces se cargan automaticamente (e invisiblemente) cada vez que se inicia Excel, por lo cual el codigo que contienen esta disponible para todos los archivos abiertos.
Contestando tu pregunta, mi codigo si que se puede usar dentro de un *.xla; para ello has lo siguiente:
- crea un nuevo archivo en blanco
- haz clic-derecho sobre el pequeno logo de Excel a la izquierda del menu Archivo
- elige la opcion 'Ver Codigo' para abrir el editor VBA.
- una vez en el Editor VBA, ve al menu Insertar>Modulo...
- en la ventana mas grande a la derecha pega el siguiente codigo:

'inicio
Option Base 1
' esta instruccion hace que el primer elemento en todas
' las matrices dinamicas del modulo sea 1 en vez de 0

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

- pulsa Alt+F11 para volver a la hoja.
- ve al menu Archivo>Guardar como...
- elige la carpeta donde quieres poner el complemento
- escribe el nombre del complemento
- en la casilla 'Cuardar como tipo:' elige la opcion 'Complemento de Microsoft Office Excel (*.xla)'
- pulsa 'Guardar'
- cierra el archivo
- ve al menu Herramientas>Complementos...
- pulsa 'Examinar'
- encuentra tu archivo recien guardado
- pulsa 'Aceptar'
- asegurate que el complemento este en la lista y tildado
- pulsa 'Aceptar'

Puedes colocar mas funciones/macros en el mismo complemento. Otra opcion podria ser la de usar Personal.xls - haz una busqueda en este grupo a traves de Google.Grupos para ver las conversaciones que hay sobre el tema.
Saludos,
KL
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida