none
Visual Basic - Excel RRS feed

  • Pregunta

  • En primer lugar, es primera vez que ingreso a Visual Studio y dado que no soy del area computacion o desarrollo de software, me gustaria saber en que consiste esta web y que beneficios puedo obtener de aca en tanto Ingeniero Civil.

    Esta direccion me fue proporcionada directamente por Microsoft.

    Mi consulta: hace algunos dias baje desde internet una secuencia de instrucciones con el fin de crear una function espcial en excel, cual es la de convertir una secuencia numerica en letras. La secuencia de instrucciones funciona bastante bien mas el tema es que preciso esa escritura en letra hebrea. Cuando quize hacer algun cambio en el programa, el sistema no reconocio la letra hebrea. Como puedo solucionar este problema? Es viable agregar alguna instruccion al paquete de instrucciones o es necesario un paquete nuevo de instrucciones?

    Muchas gracias desde ya por la ayuda que pudiere recibir

    • Cambiado webJose martes, 6 de enero de 2015 16:48 Movido a foro de VB.net para obtener mayor audiencia de expertos en VB.
    • Cambiado Enrique M. Montejo miércoles, 7 de enero de 2015 7:39 Pregunta relacionada con Microsoft Excel y programación con el lenguaje Visual Basic para Aplicaciones.
    martes, 6 de enero de 2015 15:53

Todas las respuestas

  • Hola,

    Está web es una comunidad de desarrolladores que proporciona apoyo desinteresado a otros desarrolladores o personas que se inician o que tienen algo que ver con la rama de sistemas, ciencias de la computación, informática, etc. etc. el requisito es que les baste para vivir sólo con 0 y 1 :). Si tu tienes inquietudes respecto a lo que se brinda en esta comunidad, pues estás bienvenido.

    Respecto al problema que haces mención, si las instrucciones sólo traducen números a letras del alfabeto español entonces no es la solución que buscas. Para que te permita devolver resultados al alfabeto hebreo te sugiero busques una solución acorde a tu requerimiento o que nos compartas las instrucciones que descargaste para revisar y darte propuestas.

    Si la solución propuesta atendió su consulta no olvide marcarla como respuesta.


    Willams Morales P.
    Arequipa - Perú


    martes, 6 de enero de 2015 16:20
  • Willams, en primer lugar muchisimas gracias por tu respuesta.

    Yo no soy del area, mas en tanto ingeniero civil mucho agradecere la opcion de ayudarme en esto.

    Acompano a continuacion la secuencia de instrucciones que baje:

    martes, 6 de enero de 2015 16:31
  • unction CONVERTIRNUM(Numero As Double, Optional CentimosEnLetra As Boolean) As String

    Dim Moneda As String
    Dim Monedas As String
    Dim Centimo As String
    Dim Centimos As String
    Dim Preposicion As String
    Dim NumCentimos As Double
    Dim Letra As String
    Const Maximo = 1999999999.99

    '************************************************************
    ' Parámetros
    '************************************************************
    Moneda = "Peso"         'Nombre de Moneda (Singular)
    Monedas = "Pesos"       'Nombre de Moneda (Plural)
    Centimo = "Centavo"     'Nombre de Céntimos (Singular)
    Centimos = "Centavos"   'Nombre de Céntimos (Plural)
    Preposicion = "Con"     'Preposición entre Moneda y Céntimos
    '************************************************************

    'Validar que el Numero está dentro de los límites
    If (Numero >= 0) And (Numero <= Maximo) Then

       
        Letra = NUMERORECURSIVO((Fix(Numero)))              'Convertir el Numero en letras
       
        'Si Numero = 1 agregar leyenda Moneda (Singular)
        If (Numero = 1) Then
            Letra = Letra & " " & Moneda
        'De lo contrario agregar leyenda Monedas (Plural)
        Else
            Letra = Letra & " " & Monedas
        End If
       
       
        NumCentimos = Round((Numero - Fix(Numero)) * 100)   'Obtener los centimos del Numero
       
        'Si NumCentimos es mayor a cero inicar la conversión
        If NumCentimos >= 0 Then
            'Si el parámetro CentimosEnLetra es VERDADERO obtener letras para los céntimos
            If CentimosEnLetra Then
                Letra = Letra & " " & Preposicion & " " & NUMERORECURSIVO(Fix(NumCentimos)) 'Convertir los céntimos en letra
                   
                'Si NumCentimos = 1 agregar leyenda Centimos (Singular)
                If (NumCentimos = 1) Then
                    Letra = Letra & " " & Centimo
                'De lo contrario agregar leyenda Centimos (Plural)
                Else
                    Letra = Letra & " " & Centimos
                End If
             'De lo contrario mostrar los céntimos como número
             Else
                If NumCentimos < 10 Then
                    Letra = Letra & " 0" & NumCentimos & "/100"
                Else
                    Letra = Letra & " " & NumCentimos & "/100"
                End If
             End If
        End If

        'Regresar el resultado final de la conversión
        CONVERTIRNUM = Letra

    Else
        'Si el Numero no está dentro de los límites, entivar un mensaje de error
        CONVERTIRNUM = "ERROR: El número excede los límites."
    End If

    End Function

    Function NUMERORECURSIVO(Numero As Long) As String

    Dim Unidades, Decenas, Centenas
    Dim Resultado As String

    '**************************************************
    ' Nombre de los números
    '**************************************************
    Unidades = Array("", "Un", "Dos", "Tres", "Cuatro", "Cinco", "Seis", "Siete", "Ocho", "Nueve", "Diez", "Once", "Doce", "Trece", "Catorce", "Quince", "Dieciséis", "Diecisiete", "Dieciocho", "Diecinueve", "Veinte", "Veintiuno", "Veintidos", "Veintitres", "Veinticuatro", "Veinticinco", "Veintiseis", "Veintisiete", "Veintiocho", "Veintinueve")
    Decenas = Array("", "Diez", "Veinte", "Treinta", "Cuarenta", "Cincuenta", "Sesenta", "Setenta", "Ochenta", "Noventa", "Cien")
    Centenas = Array("", "Ciento", "Doscientos", "Trescientos", "Cuatrocientos", "Quinientos", "Seiscientos", "Setecientos", "Ochocientos", "Novecientos")
    '**************************************************

    Select Case Numero
        Case 0
            Resultado = "Cero"
        Case 1 To 29
            Resultado = Unidades(Numero)
        Case 30 To 100
            Resultado = Decenas(Numero \ 10) + IIf(Numero Mod 10 <> 0, " y " + NUMERORECURSIVO(Numero Mod 10), "")
        Case 101 To 999
            Resultado = Centenas(Numero \ 100) + IIf(Numero Mod 100 <> 0, " " + NUMERORECURSIVO(Numero Mod 100), "")
        Case 1000 To 1999
            Resultado = "Mil" + IIf(Numero Mod 1000 <> 0, " " + NUMERORECURSIVO(Numero Mod 1000), "")
        Case 2000 To 999999
            Resultado = NUMERORECURSIVO(Numero \ 1000) + " Mil" + IIf(Numero Mod 1000 <> 0, " " + NUMERORECURSIVO(Numero Mod 1000), "")
        Case 1000000 To 1999999
            Resultado = "Un Millón" + IIf(Numero Mod 1000000 <> 0, " " + NUMERORECURSIVO(Numero Mod 1000000), "")
        Case 2000000 To 1999999999
            Resultado = NUMERORECURSIVO(Numero \ 1000000) + " Millones" + IIf(Numero Mod 1000000 <> 0, " " + NUMERORECURSIVO(Numero Mod 1000000), "")
    End Select

    NUMERORECURSIVO = Resultado

    End Function

    martes, 6 de enero de 2015 16:32
  • Hola.  Este sitio web provee muchos foros.  Entiendo que no es del área de informática, pero de todos modos le informo que los foros están divididos por tema para ayudar a enfocarlos mejor.

    Su pregunta está en el foro de C++.  Eso quiere decir que este foro suele ser monitoreado por quienes saben C++.  Si bien es cierto muchos de nosotros sabemos de otras cosas también, lo ideal es buscar el foro que tenga la mejor audiencia de expertos relevantes al tema.  Su función está escrita en lo que parece ser VB For Applications.  Ese lenguaje no tiene que ver con el lenguaje C++, que es el propósito de este foro.

    Moveré, por lo tanto, su pregunta a un foro más relevante esperando que le puedan ayudar mejor.

    En el caso de su problema particular, parece que busca una función que convierta una cantidad numérica a letras en hebreo.  No es simplemente traducir el resultado de esta, diría yo.  Lo mejor es que busque una función que realmente esté hecha para hebreo.  Uno nunca sabe los cambios gramaticales entre un lenguaje y otro.


    Jose R. MCP
    Code Samples

    martes, 6 de enero de 2015 16:48
  • Esta es una plataforma en donde los usuarios brindan ayuda a otros usuarios. Puedes leer viejas consultas y/o buscar por temas que te interesen. Vos medirás su utilidad, si es que aún te interesa.

    Un ejemplo de ayuda sería: puedes hacer dos cosas reescribir la función de conversión de número a letras para que la salida sea en idioma hebreo. O, usar un traductor para pasar el texto en castellano a hebreo.

    En este segundo caso es más factible de que yo pueda ayudarte...

    Honestamente desconozco si es posible escribir en hebreo usando un script latino. Se que el idioma tiene su propio sistema de escritura, aunque no me extrañaría que pudiera usar otro. Por ejemplo, el castellano se escribe únicamente con caracteres romanos. 


    martes, 6 de enero de 2015 17:00
  • En primer lugar agradezco a todas las personas que me han respondido. Debido a que no soy del area, no sabia que el foro C++ era el mas adecuado. Si mi pregunta fue transferida para alla, mucho lo agradezco pues ni se como moverla para alla.

    Respecto de las preguntas del idioma hebreo. Pienso que en efecto las instrucciones deberian de estar en el idioma hebreo, mas no se y tengo dudas, exista una funcion en excel, que con instrucciones VB  traduzca automaticamente. Con todo y para conocimiento general y para complicar mas el tema, la escritura hebrea es de derecha a izquierda, lo que hace el tema aun mas diificil de resolver, con todo me dirigi a Microsoft en Israel, mas desgraciadamente aun no he tenido apoyo. Mi computador por cierto tiene como segundo idioma el hebreo, mas , claro esta, eso no es suficiente a la hora de programar VB.

    Segire buscando haber si hay alguna solucion, pues este problema como es natural, no solo es con el idioma hebreo, sino con cientos de idiomas no latinos.

    Con todo, desearia agregar una cosa pequena, me di cuanta que desde fabrica, viene programada la function BATHTEXT, que precisamente convierte un numero en texto, mas esto solo en idioma Bahai... curioso siendo un idioma no tan popular ya venga en el paquete de funciones de excel. Pienso que asi como existe esta, podrian haber otras para otros idiomas. (?)

    OK, muchsimas gracias a todos, de verdad y en lo que yo puediere ser util desde Israel, heme a disposicion.

    miércoles, 7 de enero de 2015 8:01