Ese fichero tiene dos módulos:
Uno es el CNumeroALetra que es realmente el módulo de clase, y el otro es el
PruebaDeLaClase que en este caso sirve para probar la clase.
Cómo utilizar esto:
Primero copia el módulo de clase CNumeroALetra en tu fichero Access con el
mismo nombre.
Vamos ahora a utilizar la clase.
Supongamos que tenemos una aplicación que necesita poner las cifras en euros
y dólares .
Para ello vamos a crear 2 funciones, una que se llamará Euros y otra que se
llamará Dolares.
En un módulo "normal" escribimos lo siguiente.
Public Function Euros(ByVal Cantidad As Currency) As String
Dim Moneda As New CNumeroALetra
With Moneda
.Numero = Cantidad
Euros = .Texto
End With
End Function
Public Function Dolares(ByVal Cantidad As Currency) As String
Dim Moneda As New CNumeroALetra
With Moneda
.FormatearMoneda tmDolar
.Numero = Cantidad
Dolares = .Texto
End With
End Function
Euros(12345.67) devolverá:
doce mil trescientos cuarenta y cinco euros, con sesenta y siete céntimos
Por cierto, redondea el resultado; así Euros(12345.678) devuelve
doce mil trescientos cuarenta y cinco euros, con sesenta y ocho céntimos
Dolares(14938.2607) devolverá:
catorce mil novecientos treinta y ocho dólares, con veintiseis centavos
En la función Euros no formateamos el objeto moneda, como en la función
Dolares
(línea: .FormatearMoneda tmDolar) ya que por defecto, al crear un objeto
del tipo CNumeroALetra se formatea en Euros; al fín y al cabo estoy en
Europa.
La clase tiene otras muchas posibilidades, por ejemplo tiene predefinidas
todas estas monedas mediante la constantes enumerativas del tipo TipoMoneda.
Agradecería cualquier corrección si he metido la pata ;))
Public Enum TipoMoneda
'Sólo contador
tmContador
'Sólo contador
tmContadorFemenino
'España, fuera de circulación...
tmPeseta
' Unión europea
tmEuro
' USA, Australia, Canadá, Nueva Celanda
' Hong Kong, Singapur, etc...
tmDolar
' Colombia, Cuba, Chile, México, Rep.Dominicana
tmPeso
' Urugay
tmPesoUruguayo
' Nicaragua
tmCordoba
' Panamá
tmBalboa
' Bolivia
tmBoliviano
' Costa Rica
tmColon
' Guatemala, El salvador
tmQuetzal
' Honduras
tmLempira
' Paraguay
tmGuarani
' Perú
tmSol
' Venezuela
tmBolivar
' Como ejemplo para usarlo con medidas
tmMilimetros = 100
End Enum
Por ejemplo si queremos crear una función para contar cosas femeninas
haríamos
Public Function ContadorFemenino(ByVal Unidades As Currency) As String
Dim Moneda As New CNumeroALetra
With Moneda
.FormatearMoneda tmContadorFemenino
.Numero = Unidades
ContadorFemenino = .Texto
End With
End Function
ContadorFemenino(1201) devolverá
mil doscientas una
si queremos crear una función para contar
Public Function Contador(ByVal Unidades As Currency) As String
Dim Moneda As New CNumeroALetra
With Moneda
.FormatearMoneda tmContador
.Numero = Unidades
Contador = .Texto
End With
End Function
Así la línea
Contador ( 255)
devolverá
doscientos cincuenta y uno
Tiene muchas más posibilidades, e incluso genera eventos, como puede
comprobarse en el ejemplo del formulario.
Ahora voy a crear una función para utilizarlo en un tipo de unidad no
contemplado por la clase.
Supongamos que nos piden una función que devuelva el número de kilómetros y
como fracción el número de metros
Haríamos
Public Function Kilometros(ByVal Unidades As Currency) As String
Dim Moneda As New CNumeroALetra
With Moneda
.NombreEntero = "kilómetro"
.NombreEnteros = "kilómetros"
.NombreDecimal = "metro"
.NombreDecimales = "metros"
.Decimales = 3
.Numero = Unidades
Kilometros = .Texto
End With
End Function
Kilometros(125.25) devuelve
ciento veinticinco kilómetros, con doscientos cincuenta metros
Por supuesto que esta clase es manifiéstamente mejorable.
Si queréis hacer cualquier comentario estoy a vuestra disposición.
Saludos desde la calle Estafeta de Pamplona:
Eduardo Olaz
Microsoft [MVP] Access
eduardoALGARROBAolaz.net
ALGARROBA = @