Esta función no es mía, la saque de la web de BÚHO. Pero esta bastante bien. Has de meterla en un módulo. Function CONVIERTEEUROS(ByVal NUM As Variant) As String Dim C As String: C = "" Dim A As Double Dim Un As Byte Dim De As Byte Dim Ce As Byte Dim Un_Ma As Byte Dim De_Ma As Byte Dim Ce_Ma As Byte Dim Un_Mo As Byte Dim De_Mo As Byte Dim Ce_Mo As Byte Dim Un_Ma_Mo As Byte Dim De_Ma_Mo As Byte Dim Ce_Ma_Mo As Byte Dim G As String 'genero. Dim A2 As String Dim F As Double Dim D As String Dim BO As Boolean Dim Deci As String Dim Ente As String Dim Bo_Deci As Boolean Dim AD As Double Dim Un_De As Byte Dim De_De As Byte Dim Ce_De As Byte Dim E As String Dim Ant_D As String ' adaptación del programa a un entorno externo Dim Moneda_Programa As String 'Eur/Pts Moneda_Programa = "Eur" ' adaptación del programa a un entorno externo NUM = CONTROL_CDEC(NUM) Select Case Moneda_Programa Case "Pts" G = "a" NUM = Round(NUM) Case "Eur" G = "o" End Select A2 = CStr(NUM) Ente = "" Deci = "" BO = False Bo_Deci = False For F = 1 To Len(A2) D = Mid(A2, F, 1) If D = "." Then D = "," If D = "," Then BO = True: D = "": Bo_Deci = True Select Case BO Case False Ente = Ente + D Case True Deci = Deci + D End Select Next F If Len(Deci) > 3 Then Deci = Left(LTrim(Deci), 3) A = CDbl(Ente) If Bo_Deci = True Then AD = CDbl(Deci) If A > 999999999999# Then CONVIERTEEUROS = CStr(NUM): Exit Function '<UNIDADES> Un = Right("0" + CStr(A), 1) A = Int(A / 10) '<UNIDADES> '<DECENAS> De = Right("0" + CStr(A), 1) A = Int(A / 10) '<DECENAS> '<CENTENAS> Ce = Right("0" + CStr(A), 1) A = Int(A / 10) '<CENTENAS> ' '<UNIDADES DE MILLAR> Un_Ma = Right("0" + CStr(A), 1) A = Int(A / 10) '<UNIDADES DE MILLAR> '<DECENAS DE MILLAR> De_Ma = Right("0" + CStr(A), 1) A = Int(A / 10) '<DECENAS DE MILLAR> '<CENTENAS DE MILLAR> Ce_Ma = Right("0" + CStr(A), 1) A = Int(A / 10) '<CENTENAS DE MILLAR> ' '<UNIDADES DE MILLON> Un_Mo = Right("0" + CStr(A), 1) A = Int(A / 10) '<UNIDADES DE MILLON> '<DECENAS DE MILLON> De_Mo = Right("0" + CStr(A), 1) A = Int(A / 10) '<DECENAS DE MILLON> '<CENTENAS DE MILLON> Ce_Mo = Right("0" + CStr(A), 1) A = Int(A / 10) '<CENTENAS DE MILLON> ' '<UNIDADES DE MILLAR DE MILLON> Un_Ma_Mo = Right("0" + CStr(A), 1) A = Int(A / 10) '<UNIDADES DE MILLAR DE MILLON> '<DECENAS DE MILLAR DE MILLON> De_Ma_Mo = Right("0" + CStr(A), 1) A = Int(A / 10) '<DECENAS DE MILLAR DE MILLON> '<CENTENAS DE MILLAR DE MILLON> Ce_Ma_Mo = Right("0" + CStr(A), 1) A = Int(A / 10) '<CENTENAS DE MILLAR DE MILLON> C = "" '<TRASPASO DE CENTENAS DE MILLAR DE MILLON> Select Case Ce_Ma_Mo Case 1 If (Un_Ma_Mo = 0 And De_Ma_Mo = 0) Then C = C + "cien mil" Else C = C + "ciento" End If Case 2 C = C + &quo
Keok: copié el código para que se ejecute con el evento " al presionar una tecla", pero me arroja error de compilación por la falta de un " end sub" ¿Qué hago mal?, ¿Cuál es el evento adecuado para que se ejecute? Gracias
Perdona pero es cierto Sabes lo que pasa es que hice un copy paste y se ha copiado solo un trozo. Lo que ha debido de pasar es que no cabe más por respuesta. Así que si me das tu email te lo envío en un archivo. Ya me dirás algo.
Te envíe un email pero me lo ha devuelto, así que te contesto de nuevo por aquí. Bueno el código que te pase lo has de poner como ya te dije en un módulo que ya tengas creado o uno nuevo, como tu quieras. Luego como según me comententas tienes dos cuadros de texto (llamémosle texto1, texto2), donde texto1 es donde metes una cifra numérica y texto2 es donde tiene que aparecer su equivalente en letras. Lo que tienes que hacer es poner (en las propiedades del texto2) en el origen del control=CONVIERTEEUROS(texto1)