Hola, por favor alguien que me oriente en: tengo un cuadro de texto numérico con un valor por ej. 20, la pregunta es puedo convertir ese número 20 a texto en otro campo por ej. Veinte o cualquier otro caso con números.
1 respuesta
Respuesta de hen9
1
1
hen9, Experiencia de 10 años en manejo de programación en access,...
Esta rutina para que la utilices: Este código lo pegas en un nuevo modulo: Public Function NumerosConComaALetras(ByVal NumberStr As String) As String Dim nTemp nTemp = nTemp = InStr(NumberStr, ".") If nTemp = 0 Then NumerosConComaALetras = NumerosALetras(NumberStr, False) Else NumerosConComaALetras = NumerosALetras(Left(NumberStr, nTemp - 1), False) & " coma " & _ NumerosALetras(Mid(NumberStr, nTemp + 1), False) End If End Function Public Function NumerosEurosALetras(ByVal NumberStr As String, Optional lFemenino = False, Optional cMoneda = "euro", Optional cCentimos = "céntimo") As String Dim nTemp, nDecimales nTemp = InStr(NumberStr, ",") If nTemp = 0 Then NumerosEurosALetras = NumerosALetras(NumberStr, lFemenino, cMoneda) Else nDecimales = Len(Mid(NumberStr, nTemp + 1)) Select Case nDecimales Case 0 NumerosEurosALetras = NumerosALetras(NumberStr, lFemenino, cMoneda) Case 1, 2 'centimos' If nDecimales = 1 Then NumberStr = NumberStr & "0" End If NumerosEurosALetras = NumerosALetras(Left(NumberStr, nTemp - 1), lFemenino, cMoneda) & " con" & _ NumerosALetras(Mid(NumberStr, nTemp + 1), lFemenino, cCentimos) Case Else NumerosEurosALetras = NumerosALetras(Left(NumberStr, nTemp - 1), False) & " coma " & _ NumerosALetras(Mid(NumberStr, nTemp + 1), False) & " " & cMoneda & _ IIf(InStr("aeio", Right(cMoneda, 1)) = 0, "e", "") & "s" End Select End If End Function Public Function NumerosALetras(ByVal NumberStr As String, Optional lFemenino = True, Optional cMoneda = "") As String Dim z As String, x As String, Temp As String, c As String Dim a As Integer, b As Integer, i As Integer Dim iPos As Integer Dim data(9, 3) As String data(0, 0) = "uno" data(1, 0) = "dos" data(2, 0) = "tres" data(3, 0) = "cuatro" data(4, 0) = "cinco" data(5, 0) = "seis" data(6, 0) = "siete" data(7, 0) = "ocho" data(8, 0) = "nueve" data(9, 0) = "diez" data(0, 1) = "cien" data(1, 1) = "diez" data(2, 1) = "veinte" data(3, 1) = "treinta" data(4, 1) = "cuarenta" data(5, 1) = "cincuenta" data(6, 1) = "sesenta" data(7, 1) = "setenta" data(8, 1) = "ochenta" data(9, 1) = "noventa" data(0, 3) = "diez" data(1, 3) = "once" data(2, 3) = "doce" data(3, 3) = "trece" data(4, 3) = "catorce" data(5, 3) = "quince" data(6, 3) = "dieciséis" data(7, 3) = "diecisiete" data(8, 3) = "dieciocho" data(9, 3) = "diecinueve" 'remove redundant spaces 'NumberStr = Trim( Replace(NumberStr, ",", "")) NumberStr = Trim(NumberStr) a = Len(NumberStr) Temp = NumberStr If Val(NumberStr) = 0 Then NumerosALetras = "cero" Exit Function End If 'get rid of any decimals iPos = iPos = InStr(Temp, ".") If iPos > 0 Then Temp = Left(Temp, iPos - 1) While ((a Mod 3) <> 0) Temp = "0" & Temp a = Len(Temp) Wend NumberStr = Temp For i = a - 2 To 1 Step -3 b = b + 1 Temp = Mid(NumberStr, i, 3) z = "" ' "Intelligent" routines '------------------------ If Temp <> "000" Then If Temp = "100" Then z = "cien" Else c = Left(Temp, 1) If c <> "0" Then If c = "1" Then z = "ciento" ElseIf c = "5" Then z = " quinientos" ElseIf c = "7" Then z = " setecientos" ElseIf c = "9" Then z = " novecientos" Else z = " " & data(Val(c) - 1, 0) & "cientos" End If End If c = Mid(Temp, 2, 1) If c <> "0" Then If c <> "1" Then z = z & " " & data(Val(c), 1) Else z = z & " " & data(Val(Right(Temp, 2)) - 10, 3) End If End If End If If Right(Temp, 1) <> "0" And Mid(Temp, 2, 1) <> "1" Then z = z & IIf(z = "", "", " y ") & data(Val(Right(Temp, 1)) - 1, 0) End If End If '------------------------ If z <> "" Then Select Case b Case 1: x = z Case 2: If z = "uno" Then x = "mil" & x Else x = z & " mil" & x End If Case 3: If z = "uno" Then x = "un millón " & x Else x = z & " millones " & x End If Case 4: If z = "uno" Then x = "mil millones " & x Else x = z & " mil millones " & x End If Case 5: If z = "uno" Then x = "un billón " & x Else x = z & " billones " & x End If Case Else: Exit Function End Select End If Next 'correción de genero If x = "uno" Then x = IIf(lFemenino, "una", "un") ElseIf Right(x, 3) = "uno" Then x = Mid(x, 1, Len(x) - 3) & IIf(lFemenino, "una", IIf(cMoneda = "", "uno", "un")) ElseIf Right(x, 3) = "tos" And lFemenino Then x = Mid(x, 1, Len(x) - 3) & "tas" End If If cMoneda <> "" Then x = x & " " & IIf(Val(NumberStr) <= 1, cMoneda, cMoneda & IIf(InStr("aeio", Right(cMoneda, 1)) = 0, "e", "") & "s") End If NumerosALetras = x End Function