• Viernes 8 de Noviembre de 2024, 12:39

Autor Tema:  Pasar De Numeros A Letras  (Leído 1454 veces)

wilcocks1980

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
Pasar De Numeros A Letras
« en: Martes 8 de Enero de 2008, 11:45 »
0
buenas! y feliz año

es un programilla que te coge la cifra,y te lo pasa a cadena.
es decir, si escribes "90" pues te da como resultado "noventa"

pero el problema que tengo es al validar las comas. Si da dos comas seguidas pues no vale, eso si me sale. Lo que no me sale es el validar esto "95,5,6" por ejemlo,,,

aqui os dejo el codigo y lo probais (si entontrais mas validaciones, bienvenidas sean)
el Form tiene 2 textbox (txtNum y txtLetra) y un boton (bConvertir)

Código: Text
  1.  
  2. Public Class Form1
  3.  
  4.  
  5.     Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  6.         Me.txtNum.Focus()
  7.     End Sub
  8.  
  9. #Region "Funcion para convertir"
  10.  
  11.     Public Function NumText(ByVal valor As Double) As String
  12.         Select Case valor
  13.             Case 0 : NumText = "CERO"
  14.             Case 1 : NumText = "UN"
  15.             Case 2 : NumText = "DOS"
  16.             Case 3 : NumText = "TRES"
  17.             Case 4 : NumText = "CUATRO"
  18.             Case 5 : NumText = "CINCO"
  19.             Case 6 : NumText = "SEIS"
  20.             Case 7 : NumText = "SIETE"
  21.             Case 8 : NumText = "OCHO"
  22.             Case 9 : NumText = "NUEVE"
  23.             Case 10 : NumText = "DIEZ"
  24.             Case 11 : NumText = "ONCE"
  25.             Case 12 : NumText = "DOCE"
  26.             Case 13 : NumText = "TRECE"
  27.             Case 14 : NumText = "CATORCE"
  28.             Case 15 : NumText = "QUINCE"
  29.             Case Is < 20 : NumText = "DIECI" & NumText(valor - 10)
  30.             Case 20 : NumText = "VEINTE"
  31.             Case Is < 30 : NumText = "VEINTI" & NumText(valor - 20)
  32.             Case 30 : NumText = "TREINTA"
  33.             Case 40 : NumText = "CUARENTA"
  34.             Case 50 : NumText = "CINCUENTA"
  35.             Case 60 : NumText = "SESENTA"
  36.             Case 70 : NumText = "SETENTA"
  37.             Case 80 : NumText = "OCHENTA"
  38.             Case 90 : NumText = "NOVENTA"
  39.             Case Is < 100 : NumText = NumText(Int(valor \ 10) * 10) & " Y " & NumText(valor Mod 10)
  40.             Case 100 : NumText = "CIEN"
  41.             Case Is < 200 : NumText = "CIENTO " & NumText(valor - 100)
  42.             Case 200, 300, 400, 600, 800 : NumText = NumText(Int(valor \ 100)) & "CIENTOS"
  43.             Case 500 : NumText = "QUINIENTOS"
  44.             Case 700 : NumText = "SETECIENTOS"
  45.             Case 900 : NumText = "NOVECIENTOS"
  46.             Case Is < 1000 : NumText = NumText(Int(valor \ 100) * 100) & " " & NumText(valor Mod 100)
  47.             Case 1000 : NumText = "MIL"
  48.             Case Is < 2000 : NumText = "MIL " & NumText(valor Mod 1000)
  49.             Case Is < 1000000 : NumText = NumText(Int(valor \ 1000)) & " MIL"
  50.                 If valor Mod 1000 Then NumText = NumText & " " & NumText(valor Mod 1000)
  51.             Case 1000000 : NumText = "UN MILLON"
  52.             Case Is < 2000000 : NumText = "UN MILLON " & NumText(valor Mod 1000000)
  53.             Case Is < 1000000000000.0# : NumText = NumText(Int(valor / 1000000)) & " MILLONES "
  54.                 If (valor - Int(valor / 1000000) * 1000000) Then NumText = NumText & " " & NumText(valor - Int(valor / 1000000) * 1000000)
  55.             Case 1000000000000.0# : NumText = "UN BILLON"
  56.             Case Is < 2000000000000.0# : NumText = "UN BILLON " & NumText(valor - Int(valor / 1000000000000.0#) * 1000000000000.0#)
  57.             Case Else : NumText = NumText(Int(valor / 1000000000000.0#)) & " BILLONES"
  58.                 If (valor - Int(valor / 1000000000000.0#) * 1000000000000.0#) Then NumText = NumText & " " & NumText(valor - Int(valor / 1000000000000.0#) * 1000000000000.0#)
  59.         End Select
  60.  
  61.     End Function
  62.  
  63. #End Region
  64.  
  65.  
  66. #Region "Extras"
  67.     Private Sub bConvertir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bConvertir.Click
  68.         Dim aNum() As String, aDecimal As Boolean
  69.  
  70.         aDecimal = False
  71.         If Trim(Me.txtNum.Text) <> "" And IsNumeric(Me.txtNum.Text) Then
  72.             aNum = Split(Me.txtNum.Text, ",")
  73.             Me.txtLetra.Text = NumText(aNum(0))
  74.  
  75.             If aNum.Length > 1 Then
  76.                 Me.txtLetra.Text = Me.txtLetra.Text & " CON " & NumText(aNum(1))
  77.                 aDecimal = True
  78.             End If
  79.  
  80.             If aDecimal Then
  81.                 Me.txtLetra.Text = Me.txtLetra.Text & " CÉNTIMOS DE EURO"
  82.             Else
  83.                 Me.txtLetra.Text = Me.txtLetra.Text & " EUROS"
  84.             End If
  85.         End If
  86.     End Sub
  87.     Private Sub bBorrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bBorrar.Click
  88.         Me.txtNum.Clear()
  89.         Me.txtNum.Focus()
  90.     End Sub
  91. #End Region
  92.  
  93. #Region "Validaciones"
  94.     Private Sub txtNum_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtNum.KeyDown
  95.         Dim c As Integer = 1
  96.         If (e.KeyCode > 47 And e.KeyCode < 57) Or e.KeyCode = 188 Or e.KeyCode = 8 Or e.KeyCode = 46 Or e.KeyCode = 13 Then
  97.             Select Case e.KeyCode
  98.                 Case 48 To 57 'Numeros
  99.                 Case 96 To 105 'Numeros 2
  100.                 Case 8 'bakspace
  101.                 Case 46 'delete
  102.                 Case 13 'intro
  103.                     Me.bConvertir.PerformClick()
  104.                 Case 188 'coma
  105.                     For j As Integer = 1 To Len(txtNum.Text)
  106.                         If Mid$(txtNum.Text, j, 1) = "," Then
  107.                             c = c + 1
  108.                             If c > 1 Then
  109.                                 txtNum.Text = Mid(txtNum.Text, 1, Len(txtNum.Text) - 1)
  110.                                 txtNum.SelectionStart = Len(txtNum.Text)
  111.                                 Exit For
  112.                             End If
  113.                         End If
  114.                     Next j
  115.                 Case Else
  116.                     '    'txtNum.Text = Mid(txtNum.Text, 1, Len(txtNum.Text) - 1)
  117.                     '    'txtNum.SelectionStart = Len(txtNum.Text)
  118.  
  119.             End Select
  120.         Else
  121.             MessageBox.Show("Sólo se permiten Números")
  122.             txtNum.Text = Mid(txtNum.Text, 1, Len(txtNum.Text) - 1)
  123.             txtNum.SelectionStart = Len(txtNum.Text)
  124.             e.Handled = True
  125.         End If
  126.     End Sub
  127. #End Region
  128.  
  129. End Class
  130.  
  131.  

gracias! :hola: