elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  LibreOffice Calc OOoBasic: ERROR Else sin If
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: LibreOffice Calc OOoBasic: ERROR Else sin If  (Leído 3,729 veces)
novicio

Desconectado Desconectado

Mensajes: 27


Ver Perfil
LibreOffice Calc OOoBasic: ERROR Else sin If
« en: 13 Mayo 2018, 13:41 pm »

No sé donde colocar este tema; el subforo de Programación está orientado VBA, Jave, etc. Creo que aquí cuadra mejor.
Tengo LibreOffice y usando macros en Calc con lenguaje OOoBasic no funciona correctamente la instrucción If con Else. Se supone que es en su versión más simple
If (condición) Then [bloque instrucciones] Else [bloque instrucciones]
Pero no funciona. Da error de Else sin If.
¿Le pasa a alguien más? ¿Es un fallo de LibreOffice?
Solamente funciona la versión simple If... Then
En cuanto se mete un Else ya no va, así sea la versión simple Con un solo Else como la versión compleja con ElseIf... Else
Lo mismo si se pone EndIf (o End If) al final del primer If que si no se pone. Es poner un solo Else y ya da error de Else sin If, aunque el primer If esté claro.
¿En OpenOffice pasa lo mismo? Lo digo por cerrar LibreOffice y pasarme al otro, pero es que creo que ya anda de capa caída con poca gente y sin soporte.


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.822



Ver Perfil
Re: LibreOffice Calc OOoBasic: ERROR Else sin If
« Respuesta #1 en: 13 Mayo 2018, 14:49 pm »

Tengo LibreOffice y usando macros en Calc con lenguaje OOoBasic

Si realmente estás utilizando LibreOffice, que no OpenOffice, entonces al parecer el lenguaje de scripting que estás usando es LibreOffice BASIC (como indica en su página web: https://help.libreoffice.org/Common/Scripting ), no OpenOffice.org BASIC (OOo BASIC). Solo lo comento para hablar con propiedad. En principio no debería haber diferencias tan importantes como para crear problemas de compatibilidad entre un script escrito en un dialecto y el otro, de hecho quizás no exista diferencia alguna más que el nombre, pero quien sabe, podrían tener algunas pequeñas diferencias entre si...

De todas formas la sintaxis de una condicional en cualquier dialecto BASIC no debería cambiar... ¿te has asegurado de estar utilizando esta sintaxis?:

Código
  1. If (Expresión) Then
  2.  
  3. Else
  4.  
  5. End If

Aquí tienes más ejemplos (para OOo BASIC):

Por cierto, el tal LibreOffice no te indica cual es exactamente el error?... ¿solo te dice "error" y ya está?. ¿Has probado a escribir la macro/script en otro de los lenguajes soportados como por ejemplo javascript o Python?.

Saludos.


« Última modificación: 13 Mayo 2018, 15:06 pm por Eleкtro » En línea

novicio

Desconectado Desconectado

Mensajes: 27


Ver Perfil
Re: LibreOffice Calc OOoBasic: ERROR Else sin If
« Respuesta #2 en: 13 Mayo 2018, 18:38 pm »

LibreOffice sí me dice el error, me indica que hay un Else o EndIf sin If.
Lo vemos con un ejemplo tonto. Pongo solamente If...Then y funciona.

Uso If...Then...Else ¡ya no funciona!
Error de sintaxis de BASIC
Else/EndIf sin If

Da igual si pongo el End If, da el mismo error


EDITO: Por alguna razón las imágenes no se ven, dejo las direcciones:
https://imgur.com/cwyAkIS
https://imgur.com/yD0605t
https://imgur.com/HJBfQBP
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.822



Ver Perfil
Re: LibreOffice Calc OOoBasic: ERROR Else sin If
« Respuesta #3 en: 13 Mayo 2018, 21:16 pm »

En mi comentario anterior acabo de explicarte y mostrarte como debes usar la sintaxis, no solo eso sino que además te indiqué un enlace para que lo leyeses y comprendieses mejor con documentación sobre el uso de If/Then/Else y ejemplos de uso... pero no veo que hayas aplicado el ejemplo que te dije en ninguna de las imágenes que has mostrado...

Sería así:

Código
  1. If x=1 Then
  2.  MsgBox("El número es igual a 1.")
  3.  
  4. Else
  5.  MsgBox("El número es distinto a 1.")
  6.  
  7. End If



Con respecto al error en las imágenes que has mostrado...

En un bloque de condicional multilinea es necesario especificar 'End If' para cerrar el bloque, mientras que si usas la sintaxis de una sola linea no es necesario especificarlo. Creo que de ahí vienen las confusiones que has tenido, el fallo que cometes en la imagen nº2 y nº3 se debe a eso, como te está indicando el error, falta un End If para cerrar el bloque de la condicional multilinea... y aparte de eso también es que estás colocando la sentencia del MsgBox a la derecha de "Then" y "Else", pero como ves en el ejemplo que acabo de mostrarte, arriba especifico la expresión a evaluar, y en la linea de abajo la sentencia del MsgBox... aunque esto no tiene por que ser considerado un error en ese dialecto de BASIC (o si), pero mejor que sigas el ejemplo que se te da...

Si lo que buscas es colocarlo todo en una sola linea... bueno, yo no te recomiendo usar la sintaxis de una linea, ya que aparte de verse horrible (casi rozando el adjetivo Ininteligible) y ser motivo suficiente para acabar haciendo un código espagueti, también es algo que te limita la depuración del código, y te impide añadir un control de errores y te estorbará cuando necesites añadir más sentencias aparte de ese MsgBox, pero bueno, si realmente quieres hacerlo en una linea a pesar de esta recomendación entonces en LibreOffice BASIC deberías poder usar una de las siguientes opciones:

La sintaxis de una linea de condicional IF/Else:
Código
  1. If x=1 Then MsgBox("El número es igual a 1.") Else MsgBox("El número es distinto a 1.")

La función IIf:
Código
  1. IIf(x=1, MsgBox("El número es igual a 1."), MsgBox("El número es distinto a 1."))

O el operador If:
Código
  1. If(x=1, MsgBox("El número es igual a 1."), MsgBox("El número es distinto a 1."))

...de lo contrario, ya te mostré la sintaxis de una condicional multilinea.

Saludos.
« Última modificación: 13 Mayo 2018, 21:58 pm por Eleкtro » En línea

novicio

Desconectado Desconectado

Mensajes: 27


Ver Perfil
Re: LibreOffice Calc OOoBasic: ERROR Else sin If
« Respuesta #4 en: 13 Mayo 2018, 22:39 pm »

Gracias por las molestias que te has tomado Elektro. Efectivamente es que no pensaba yo que el intérprete BASIC fuese tan sensible a que colocases las instrucciones inmediatamente detrá del Then y del Else o que las colocases en otra línea.
Por mi el tema queda cerrado.
Un saludo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Source] Calculadora Calc Don 0.7 « 1 2 3 4 »
Programación C/C++
Dryken 34 21,251 Último mensaje 20 Octubre 2012, 12:19 pm
por Dryken
Formual de Calc (OpenOffice)
Programación General
Zeroql 0 1,581 Último mensaje 17 Septiembre 2012, 00:56 am
por Zeroql
X-CALC
Software
Mario Núñez 8 2,804 Último mensaje 11 Abril 2013, 10:33 am
por Mario Núñez
LibreOffice Calc estará optimizado para GPUs de AMD
Noticias
wolfbcn 0 1,371 Último mensaje 3 Julio 2013, 21:37 pm
por wolfbcn
MOVIDO: LibreOffice Calc OOoBasic: ERROR Else sin If
Foro Libre
Eleкtro 0 1,246 Último mensaje 13 Mayo 2018, 14:50 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines