Función IsMissing, en OpenOffice Basic

En el libro de Macros de OpenOffice y LibreOffice de Mauricio macros en la pagina 75, se pone un ejemplo de la Función IsMissing.

Textualmente dice:

El paso de argumentos en subrutinas y funciones, tiene otra posibilidad muy interesante, el paso de argumentos opcionales, continuemos con nuestro ejemplo del circulo, supongamos que ahora se nos pide hacer una macro que calcule ya sea el área o el perímetro de un circulo, para usar la misma función, le agregaremos un argumento opcional para saber si lo que queremos calcular es el perímetro”.

Sigue diciendo en la misma pagina 75:

“Nota el uso de la palabra clave Optional, para fines de lo que se nos pide usamos una variable tipo boleana, verdadera o falsa (Boolean), pero en tus funciones puede declarar al igual que los otros argumentos, del tipo que necesites, puedes declarar tantos argumentos opcionales como necesites, el punto importante es que “compruebes” si se paso o no el argumento para que en su defecto, le asignes un valor por default a dicho argumento, para verificar si se paso o no un argumento usas la función de OOo Basic IsMissing( Argumento ), como se ve en el ejemplo anterior. Todos los parámetros que declares como opcionales deben de ir como últimos argumentos declarados”.

La duda que tal vez pueda surgir es donde tengo marcado con color rojo en el parrafo anterior. Te pongo un ejemplo adicional: para que sea mas entendible eso de argumentos opcionales.

Option Explicit
Sub CalcularCirculo
Dim dArea As Double
Dim dPeri As Double
Dim sRadio As Single
	sRadio = CSng( Trim( InputBox( "¿Cual es el radio?", "Circulo", "1" ) ) )
	    If sRadio > 0 Then
        'Aquí usamos la función SIN el argumento opcional
    If sRadio > 0 Then
        'Aquí usamos la función SIN el argumento opcional
        dArea = Circulo( sRadio )
        MsgBox "Área = " & Str(dArea) 

    End If
End Sub 
Function Circulo( Radio As Single, Optional Perimetro As Boolean ) As Double 
Const PI As Single = 3.1416 
'Comprobamos si el parámetro se paso o no 
    If IsMissing( Perimetro ) Then
        'Si no se paso le asignamos el valor por default
        Perimetro = False
        if perimetro is false then
        msgbox "perimetro es falso"
        else
        msgbox "perimetro es verdadero"
        endif
    End If 
If Perimetro Then 
Circulo = PI * ( Radio * 2 ) 'Calculo de PERIMETRO Else 
Circulo = PI * ( Radio ^ 2 ) 'calculo de AREA 
End If 
End Function

En el ejemplo anterior, si te fijas bien elimine la variable “dPeri”, asi que la variable de la funcion que se llama “Perimetro”, asi que al comprobar la funcion “Perimetro” nuestra macro encontrara que no existe asi que nos enviara un mensaje que dice: “perimetro es falso”.

De todos modos si te alguna duda te invito a que hagas tus pruebas con los siguientes codigos que te dejo adjuntos en formato de texto plano para que hagas tus pruebas, solo así podras aprender que significa eso de argumentos opcionales con IsMissing. Pero solo lo sabras probando estos codigos, bajo tu responsabilidad. codigos en texto plano aqui

Si te sirvio mi aporte dimelo en los comentarios.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.