Haz tu Pregunta
0

Cómo depurar una función en Basic?

preguntado 2016-08-01 14:20:35 +0200

Imagen Gravatar de leo3487

updated 2016-08-01 14:23:00 +0200

He copiado tal cual una función NumLetras, de un libro de Excel a un libro de Calc, pero al usarla me da el valor #Nulo! cuando en Excel si funciona

Ahora quiero depurar la función a ver donde me equivoqué o dónde falla, pero en el cuadro de dialogo Herramientas > Macros > Ejecutar macro y en Herramientas > Macros > Organizar macros > LibreOffice Basic no encuentro la forma de poner los parámetros a utilizar

PD: La función requiere un número Double y un Integer; y devuelvle una cadena (convierte un número en letras)

=Numletras(A1;1) Convierte el número en A1 a letras en mayúscula

LibreOffice 4.2.5.2 (ya se que es viejo pero en mi pc del trabajo no tengo privilegios de administrador)

edit re-etiquetar marcar como ofensivo cerrar fusionar delete

Comments

Hola @eo3487, revelar la función completa para el análisis.

Imagen Gravatar de Gilberto Schiavinatto Gilberto Schiavinatto ( 2016-08-10 04:35:15 +0200 )edit

2 Respuestas

Ordenar por » viejos nuevas más votado
1

respondido 2016-09-16 09:46:04 +0200

Imagen Gravatar de m.a.riosv

Hay una extensión que creo te permite realizar lo que creo hace esa macro:

Números a texto

edit marcar como ofensivo delete enlace mas
0

respondido 2016-09-16 05:01:53 +0200

this post is marked as community wiki

This post is a wiki. Anyone with karma >75 is welcome to improve it.

buen día, tengo esta función que utilizo en Excel, quisiera utilizarla en LibreOffice, lo que hace es convertir cadena numéricas a texto, ejemplo "150" devuelve "ciento cincuenta". esta es la función completa

Function EnLetras(Valor, Optional ByVal Tipo As Byte = 1) As String 'funcion Principal '
  If Not IsNumeric(Valor) Then
    EnLetras = "? La referencia no es valor o... 'excede' la precisión !!!": Exit Function
  End If: Dim Moneda As String, Fracs As String, Cents As Integer
  If Int(Abs(Valor)) = 1 Then Moneda = "" Else Moneda = ""
  If Right(Letras(Abs(Int(Valor))), 6) = "illón " Or Right(Letras(Abs(Int(Valor))), 8) = "illones " Then Moneda = "de" & Moneda
    Cents = Round(Abs(Valor) - Int(Abs(Valor)), 2) * 100
  If Cents >= 1 <= 9 Then Fracs = " con 0" & Cents & "/100"
  If Cents >= 10 Then Fracs = " con " & Cents & "/100"
  If Cents = 0 Then Fracs = " con 00/100"
  EnLetras = Letras(Int(Abs(Valor))) & Moneda & Fracs
  If Valor < 0 Then EnLetras = "menos " & EnLetras
  If Tipo = 2 Then EnLetras = UCase(EnLetras) ' TODO EN MAYUSCULAS '
  If Tipo = 3 Then EnLetras = StrConv(EnLetras, vbProperCase) ' Todo Como Nombre Propio '
  If Tipo = 4 Then EnLetras = UCase(Left(EnLetras, 1)) & Mid(EnLetras, 2) 'Primer letra en mayuscula SOLAMENTE '
  EnLetras = EnLetras
End Function
Private Function Letras(Valor) As String ' Funci?n Auxiliar [uso 'exclusivo'de la funcion 'principal'] '
  Select Case Int(Valor)
    Case 0: Letras = "cero"
    Case 1: Letras = "un"
    Case 2: Letras = "dos"
    Case 3: Letras = "tres"
    Case 4: Letras = "cuatro"
    Case 5: Letras = "cinco"
    Case 6: Letras = "seis"
    Case 7: Letras = "siete"
    Case 8: Letras = "ocho"
    Case 9: Letras = "nueve"
    Case 10: Letras = "diez"
    Case 11: Letras = "once"
    Case 12: Letras = "doce"
    Case 13: Letras = "trece"
    Case 14: Letras = "catorce"
    Case 15: Letras = "quince"
    Case Is < 20: Letras = "dieci" & Letras(Valor - 10)
    Case 20: Letras = "veinte"
    Case Is < 30: Letras = "veinti" & Letras(Valor - 20)
    Case 30: Letras = "treinta"
    Case 40: Letras = "cuarenta"
    Case 50: Letras = "cincuenta"
    Case 60: Letras = "sesenta"
    Case 70: Letras = "setenta"
    Case 80: Letras = "ochenta"
    Case 90: Letras = "noventa"
    Case Is < 100: Letras = Letras(Int(Valor \ 10) * 10) & " y " & Letras(Valor Mod 10)
    Case 100: Letras = "cien"
    Case Is < 200: Letras = "ciento " & Letras(Valor - 100)
    Case 200, 300, 400, 600, 800: Letras = Letras(Int(Valor \ 100)) & "cientos"
    Case 500: Letras = "quinientos"
    Case 700: Letras = "setecientos"
    Case 900: Letras = "novecientos"
    Case Is < 1000: Letras = Letras(Int(Valor \ 100) * 100) & " " & Letras(Valor Mod 100)
    Case 1000: Letras = "mil"
    Case Is < 2000: Letras = "mil " & Letras(Valor Mod 1000)
    Case Is < 1000000: Letras = Letras(Int(Valor \ 1000)) & " mil"
      If Valor Mod 1000 Then Letras = Letras & " " & Letras(Valor Mod 1000)
    Case 1000000: Letras = "un millón "
    Case Is < 2000000: Letras = "un millón " & Letras(Valor Mod 1000000)
    Case Is < 1000000000000#: Letras = Letras(Int(Valor / 1000000)) & " millones "
      If (Valor - Int(Valor / 1000000) * 1000000) _
        Then Letras = Letras & Letras(Valor - Int(Valor / 1000000) * 1000000)
    Case ...
(mas)
edit marcar como ofensivo delete enlace mas
Ingresa/Regístrate para Contestar

Herramientas de Preguntas

1 seguidor

Estadisticas

Preguntado: 2016-08-01 14:20:35 +0200

Visto: 107 veces

Ultima actualización: Jul 29 '18