Optional

25/01/2005 - 01:49 por Jose Nuñez | Informe spam
Cuando pongo un parámetro opcional en una función VBA y la escribo de la
siguiente forma funciona correctamente:

Public function XX(strParam1 as string, Optional strParam2)



Pero si al final agrego el tipo de dato de ese parametro opcional:

Public function XX(strParam1 as string, Optional strParam2 as string)


resulta que dicho parámetro ya no es opcional .
En la ayuda de Excel no dice nada al respecto.

Supuestamente esa es la sintaxis correcta, e incluso se le puede asignar un
valor: ... Optional strParam2 as string = "xxx" ...

Agradezco si me pueden dar una ayuda con esto.

Saludos.
José Nuñez
Montevideo - Uruguay

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
25/01/2005 - 06:05 | Informe spam
hola, Jose !

... un parametro opcional en una funcion VBA ... de la siguiente forma funciona correctamente:
Public function XX(strParam1 as string, Optional strParam2)
Pero si al final agrego el tipo de dato de ese parametro opcional:
Public function XX(strParam1 as string, Optional strParam2 as string)
resulta que dicho parametro ya no es opcional ... la ayuda de Excel no dice nada al respecto.
... esa es la sintaxis correcta, e incluso se le puede asignar un valor: ... Optional strParam2 as string = "xxx" ...



1° cuando antepones la palabra clave 'optional' a un argumento en una funcion, 'significa'...
a) [precisamente] que 'ese' parametro no necesita ser proporcionado a la funcion
b) [necesariamente] que los siguientes argumentos [en caso de haberlos] TAMBIEN 'deberan ser' opcionales
2° [como bien lo mencionas] incluso 'puedes' asignar su valor 'inicial/por omision' [si es que no se proporciona]
3° si 'te afecta' el establecer el 'tipo de datos' de algun parametro [opcional o no]... [probablemente]...
se debe a' que el codigo esta 'tratando' de adivinar/averiguar el tipo de datos que 'debera manejar'
[dicho sea de paso, si no se asigna un tipo de datos... 'se asume' de tipo 'variant' -que consume mas recursos-]
4° al definir una variable [o argumento en funcion] con un tipo de datos 'string', se inicializa con una cadena vacia ->""<-
[y en tanto no sea 'llenado/modificado', sera el valor_texto que el codigo estara 'manejando']
5° [hay mas... pero] 'en resumen' [y para el caso concreto que expones]...
-> si vas a manejar strings... podrias 'llenar' el argumento omitido p.ej.
a) en tu forma 'original' ->public func.. optional strParam2)<- [incluso con el 'As String']
If IsMissing(strParam2) Then strParam2 = ""
b) con un valor asignado ->public func.. optional strParam2 as string = "xxx")<-
If strParam2 = "xxx" Then o... If strParam2 <> "xxx" Then

¿comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Manuel Romero
25/01/2005 - 14:59 | Informe spam
El IsMissing solo funciona cuando el tipo del parametro es Variant, cuando
es de otro tipo toma el valor por defecto, como ya lo mencionaste

"Héctor Miguel" escribió en el mensaje
news:
hola, Jose !

> ... un parametro opcional en una funcion VBA ... de la siguiente forma


funciona correctamente:
> Public function XX(strParam1 as string, Optional strParam2)
> Pero si al final agrego el tipo de dato de ese parametro opcional:
> Public function XX(strParam1 as string, Optional strParam2 as string)
> resulta que dicho parametro ya no es opcional ... la ayuda de Excel no


dice nada al respecto.
> ... esa es la sintaxis correcta, e incluso se le puede asignar un valor:


... Optional strParam2 as string = "xxx" ...

1° cuando antepones la palabra clave 'optional' a un argumento en una


funcion, 'significa'...
a) [precisamente] que 'ese' parametro no necesita ser proporcionado a


la funcion
b) [necesariamente] que los siguientes argumentos [en caso de


haberlos] TAMBIEN 'deberan ser' opcionales
2° [como bien lo mencionas] incluso 'puedes' asignar su valor 'inicial/por


omision' [si es que no se proporciona]
3° si 'te afecta' el establecer el 'tipo de datos' de algun parametro


[opcional o no]... [probablemente]...
se debe a' que el codigo esta 'tratando' de adivinar/averiguar el tipo


de datos que 'debera manejar'
[dicho sea de paso, si no se asigna un tipo de datos... 'se asume' de


tipo 'variant' -que consume mas recursos-]
4° al definir una variable [o argumento en funcion] con un tipo de datos


'string', se inicializa con una cadena vacia ->""<-
[y en tanto no sea 'llenado/modificado', sera el valor_texto que el


codigo estara 'manejando']
5° [hay mas... pero] 'en resumen' [y para el caso concreto que expones]...
-> si vas a manejar strings... podrias 'llenar' el argumento omitido


p.ej.
a) en tu forma 'original' ->public func.. optional strParam2)<-


[incluso con el 'As String']
If IsMissing(strParam2) Then strParam2 = ""
b) con un valor asignado ->public func.. optional strParam2 as


string = "xxx")<-
If strParam2 = "xxx" Then o... If strParam2


<> "xxx" Then

¿comentas?
saludos,
hector.


Respuesta Responder a este mensaje
#3 Jose Nuñez
26/01/2005 - 01:32 | Informe spam
OK.

Muchas gracias a ambos por los comentarios.

Saludos.
José Nuñez


"Manuel Romero" @hotmail.com> wrote in message
news:%
El IsMissing solo funciona cuando el tipo del parametro es Variant, cuando
es de otro tipo toma el valor por defecto, como ya lo mencionaste

"Héctor Miguel" escribió en el mensaje
news:
> hola, Jose !
>
> > ... un parametro opcional en una funcion VBA ... de la siguiente forma
funciona correctamente:
> > Public function XX(strParam1 as string, Optional strParam2)
> > Pero si al final agrego el tipo de dato de ese parametro opcional:
> > Public function XX(strParam1 as string, Optional strParam2 as string)
> > resulta que dicho parametro ya no es opcional ... la ayuda de Excel no
dice nada al respecto.
> > ... esa es la sintaxis correcta, e incluso se le puede asignar un


valor:
... Optional strParam2 as string = "xxx" ...
>
> 1° cuando antepones la palabra clave 'optional' a un argumento en una
funcion, 'significa'...
> a) [precisamente] que 'ese' parametro no necesita ser proporcionado


a
la funcion
> b) [necesariamente] que los siguientes argumentos [en caso de
haberlos] TAMBIEN 'deberan ser' opcionales
> 2° [como bien lo mencionas] incluso 'puedes' asignar su valor


'inicial/por
omision' [si es que no se proporciona]
> 3° si 'te afecta' el establecer el 'tipo de datos' de algun parametro
[opcional o no]... [probablemente]...
> se debe a' que el codigo esta 'tratando' de adivinar/averiguar el


tipo
de datos que 'debera manejar'
> [dicho sea de paso, si no se asigna un tipo de datos... 'se asume'


de
tipo 'variant' -que consume mas recursos-]
> 4° al definir una variable [o argumento en funcion] con un tipo de datos
'string', se inicializa con una cadena vacia ->""<-
> [y en tanto no sea 'llenado/modificado', sera el valor_texto que el
codigo estara 'manejando']
> 5° [hay mas... pero] 'en resumen' [y para el caso concreto que


expones]...
> -> si vas a manejar strings... podrias 'llenar' el argumento omitido
p.ej.
> a) en tu forma 'original' ->public func.. optional strParam2)<-
[incluso con el 'As String']
> If IsMissing(strParam2) Then strParam2 = ""
> b) con un valor asignado ->public func.. optional strParam2 as
string = "xxx")<-
> If strParam2 = "xxx" Then o... If strParam2
<> "xxx" Then
>
> ¿comentas?
> saludos,
> hector.
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida