Valor de variables.

15/07/2005 - 22:59 por Desastres | Informe spam
Buenas tardes.
Tengo unas variables levantiscas. Recogen datos del tipo Código de documento, fecha y valor del documento.
Quería declararlas como Single, pero si lo hago, con las instrucciones siguientes:

If variable = "" then msgbox " Toca la trompeta"
If variable <>"" then msgbox " Toca la trompeta"

resulta que la trompeta no se calla.

Para conseguir que se calle la trompeta la mitad de las veces, tengo que declar las variables como Variant y utrilizar :

If IsEmpty(Variable) then MsgBox " Toca la trompeta"
If Not IsEmpty(Variable) then MsgBox " Toca la trompeta"

Pero no es lo que deseaba hacer. ¿Como puedo tener la seguridad de que una variable tiene algún valor y obtenerlo? y
¿como anular ese valor ( no cero que es un valor posible ) ?

Saludos
Des

Preguntas similare

Leer las respuestas

#1 Desastres
15/07/2005 - 23:55 | Informe spam
Hola KL, Gracias.

Si la variable ( utilicé Single) toma valores distintos en un proceso y coincide que el ultimo o una secuencia al final
, tiene por valor cero( el mismo valor que por defecto ) , no podré discernir si ha sido inicializada o no.

Aún así me has ayudado, pero quisiera encontrar una forma de obtener como respuesta la seguridad de que la variable se
ha "llenado" o no.
Es decir, obtener algo similar al IsEmty de una Variant o el Is nothing de un rango no encontrado con un Find.

Saludos
José Luis

"KL" escribió en el mensaje news:%
Hola Desastres,

No estoy seguro de entender lo que intentas hacer. En todo caso decirte que
al declarar una variable como:

Single, Double, Long, Integer, etc. - el valor de la variable por defecto es
0 y no puede ser "" a no ser que fuerces la conversion redeclarandola o
mediante alguna de las funciones de conversion tipo CStr, etc.

String - el valor de la variable por defecto es "", y aunque le asignes
numeros seran cadenas de texto, p.ej. "0", "1", "333", etc. Tambien se puede
forzar la conversion p.ej. mediante CDbl, CLng, etc.

Boolean - el valor de la variable por defecto es False, etc. etc.

Variant - adoptara el tipo segun el valor que le asignes (por cierto es el
tipo por defecto si no se ha declarado la variable expresamente) y puede
variar facilmente en teimpo de ejecucion.

Comentas mas detalles?

Saludos,
KL



"Desastres" wrote in message
news:
> Buenas tardes.
> Tengo unas variables levantiscas. Recogen datos del tipo Código de
> documento, fecha y valor del documento.
> Quería declararlas como Single, pero si lo hago, con las instrucciones
> siguientes:
>
> If variable = "" then msgbox " Toca la trompeta"
> If variable <>"" then msgbox " Toca la trompeta"
>
> resulta que la trompeta no se calla.
>
> Para conseguir que se calle la trompeta la mitad de las veces, tengo que
> declar las variables como Variant y utrilizar :
>
> If IsEmpty(Variable) then MsgBox " Toca la trompeta"
> If Not IsEmpty(Variable) then MsgBox " Toca la trompeta"
>
> Pero no es lo que deseaba hacer. ¿Como puedo tener la seguridad de que
> una variable tiene algún valor y obtenerlo? y
> ¿como anular ese valor ( no cero que es un valor posible ) ?
>
> Saludos
> Des
>
>


Respuesta Responder a este mensaje
#2 KL
16/07/2005 - 00:05 | Informe spam
Hola Desastres,

Pues con los tipos numericos va a ser dificil si no imposible, dado que el
valor inicial (por defecto) es tambien uno de los valores permitidos por tu
macro. De todas formas, por que no expones tu codigo y pensamos juntos en
alguna solucion radicalmente distinta?

Saludos,
KL


"Desastres" wrote in message
news:%
Hola KL, Gracias.

Si la variable ( utilicé Single) toma valores distintos en un proceso y
coincide que el ultimo o una secuencia al final
, tiene por valor cero( el mismo valor que por defecto ) , no podré
discernir si ha sido inicializada o no.

Aún así me has ayudado, pero quisiera encontrar una forma de obtener como
respuesta la seguridad de que la variable se
ha "llenado" o no.
Es decir, obtener algo similar al IsEmty de una Variant o el Is nothing de
un rango no encontrado con un Find.

Saludos
José Luis

"KL" escribió en el mensaje
news:%
Hola Desastres,

No estoy seguro de entender lo que intentas hacer. En todo caso decirte
que
al declarar una variable como:

Single, Double, Long, Integer, etc. - el valor de la variable por defecto
es
0 y no puede ser "" a no ser que fuerces la conversion redeclarandola o
mediante alguna de las funciones de conversion tipo CStr, etc.

String - el valor de la variable por defecto es "", y aunque le asignes
numeros seran cadenas de texto, p.ej. "0", "1", "333", etc. Tambien se
puede
forzar la conversion p.ej. mediante CDbl, CLng, etc.

Boolean - el valor de la variable por defecto es False, etc. etc.

Variant - adoptara el tipo segun el valor que le asignes (por cierto es
el
tipo por defecto si no se ha declarado la variable expresamente) y puede
variar facilmente en teimpo de ejecucion.

Comentas mas detalles?

Saludos,
KL



"Desastres" wrote in message
news:
> Buenas tardes.
> Tengo unas variables levantiscas. Recogen datos del tipo Código de
> documento, fecha y valor del documento.
> Quería declararlas como Single, pero si lo hago, con las instrucciones
> siguientes:
>
> If variable = "" then msgbox " Toca la trompeta"
> If variable <>"" then msgbox " Toca la trompeta"
>
> resulta que la trompeta no se calla.
>
> Para conseguir que se calle la trompeta la mitad de las veces, tengo
> que
> declar las variables como Variant y utrilizar :
>
> If IsEmpty(Variable) then MsgBox " Toca la trompeta"
> If Not IsEmpty(Variable) then MsgBox " Toca la trompeta"
>
> Pero no es lo que deseaba hacer. ¿Como puedo tener la seguridad de que
> una variable tiene algún valor y obtenerlo? y
> ¿como anular ese valor ( no cero que es un valor posible ) ?
>
> Saludos
> Des
>
>






Respuesta Responder a este mensaje
#3 Manuel Romero
16/07/2005 - 00:29 | Informe spam
Para yu primer caso, la variable no puede ser Single, sino String ya que la
comparas con el valor "".

Obviamente la trompeta nunca se calla, porque si esta vacia suena y si no
esta vacia, tambien suena. Existe alguna opcion diferente? como dice el
viejo y conocido refran (Chapulin Colorado) "palo porque bogas y palo porque
no bogas"

En el otro caso, cuando usas Variants, Empty es un valor especial que pueden
tomar este tipo de variables (al igual que Null, y a proposito es diferente
de ""), por lo tanto la primera condicion puede o no puede cumplirse a menos
que asignes explicitamente el valor Empty a la variable Variant o la
declares y no le asignes ningun valor.


"Desastres" escribió en el mensaje
news:
Buenas tardes.
Tengo unas variables levantiscas. Recogen datos del tipo Código de
documento, fecha y valor del documento.
Quería declararlas como Single, pero si lo hago, con las instrucciones
siguientes:

If variable = "" then msgbox " Toca la trompeta"
If variable <>"" then msgbox " Toca la trompeta"

resulta que la trompeta no se calla.

Para conseguir que se calle la trompeta la mitad de las veces, tengo que
declar las variables como Variant y utrilizar :

If IsEmpty(Variable) then MsgBox " Toca la trompeta"
If Not IsEmpty(Variable) then MsgBox " Toca la trompeta"

Pero no es lo que deseaba hacer. ¿Como puedo tener la seguridad de que
una variable tiene algún valor y obtenerlo? y
¿como anular ese valor ( no cero que es un valor posible ) ?

Saludos
Des


Respuesta Responder a este mensaje
#4 Desastres
16/07/2005 - 01:11 | Informe spam
Hola KL, Gracias.

No tengo el código a mano (esta en otro Pc sin conexión) pero el planteamiento es muy sencillo.( la solución, para mi,
es otra cosa).
En un proceso comercial se pueden definir tres tipos de documentos: Pedido, Factura pro forma y Factura comercial (
entre otros ).
Supón el numero/ código del pedido en la columna 6, el de la factura pro forma en la 8 y la Factura comercial en la 10.
Como el proceso, en este caso, comienza por el pedido, cada una de las líneas tiene código de pedido y fecha de pedido,
pero no es obligatorio( al menos en mi planteamiento) que se pase una Factura pro forma de todas las líneas del pedido
( por tanto alguna línea en Factura Pro forma no tendrá valor , o lo que es lo mismo la variable que la recoja valdrá
cero. Si pido el valor de la variable en este momento, no sabré si se ha inicializado o no, salvo que ponga un contador
paralelo a ella que me recoja todas las veces que no ha sido cero, con lo cual sabría que ha sido inicializada si el
contador es al menos 1..
La misma proporción entre Pedido y pro forma se puede establecer entre Pro forma y Factura comercial definitiva. ( en
este caso columna 10 )
Se trataba tan solo de intentar sacar el máximo partido con los menos pasos posibles.
Saludos
Des



"KL" escribió en el mensaje news:
Hola Desastres,

Pues con los tipos numericos va a ser dificil si no imposible, dado que el
valor inicial (por defecto) es tambien uno de los valores permitidos por tu
macro. De todas formas, por que no expones tu codigo y pensamos juntos en
alguna solucion radicalmente distinta?

Saludos,
KL


"Desastres" wrote in message
news:%
> Hola KL, Gracias.
>
> Si la variable ( utilicé Single) toma valores distintos en un proceso y
> coincide que el ultimo o una secuencia al final
> , tiene por valor cero( el mismo valor que por defecto ) , no podré
> discernir si ha sido inicializada o no.
>
> Aún así me has ayudado, pero quisiera encontrar una forma de obtener como
> respuesta la seguridad de que la variable se
> ha "llenado" o no.
> Es decir, obtener algo similar al IsEmty de una Variant o el Is nothing de
> un rango no encontrado con un Find.
>
> Saludos
> José Luis
>
> "KL" escribió en el mensaje
> news:%
>> Hola Desastres,
>>
>> No estoy seguro de entender lo que intentas hacer. En todo caso decirte
>> que
>> al declarar una variable como:
>>
>> Single, Double, Long, Integer, etc. - el valor de la variable por defecto
>> es
>> 0 y no puede ser "" a no ser que fuerces la conversion redeclarandola o
>> mediante alguna de las funciones de conversion tipo CStr, etc.
>>
>> String - el valor de la variable por defecto es "", y aunque le asignes
>> numeros seran cadenas de texto, p.ej. "0", "1", "333", etc. Tambien se
>> puede
>> forzar la conversion p.ej. mediante CDbl, CLng, etc.
>>
>> Boolean - el valor de la variable por defecto es False, etc. etc.
>>
>> Variant - adoptara el tipo segun el valor que le asignes (por cierto es
>> el
>> tipo por defecto si no se ha declarado la variable expresamente) y puede
>> variar facilmente en teimpo de ejecucion.
>>
>> Comentas mas detalles?
>>
>> Saludos,
>> KL
>>
>>
>>
>> "Desastres" wrote in message
>> news:
>> > Buenas tardes.
>> > Tengo unas variables levantiscas. Recogen datos del tipo Código de
>> > documento, fecha y valor del documento.
>> > Quería declararlas como Single, pero si lo hago, con las instrucciones
>> > siguientes:
>> >
>> > If variable = "" then msgbox " Toca la trompeta"
>> > If variable <>"" then msgbox " Toca la trompeta"
>> >
>> > resulta que la trompeta no se calla.
>> >
>> > Para conseguir que se calle la trompeta la mitad de las veces, tengo
>> > que
>> > declar las variables como Variant y utrilizar :
>> >
>> > If IsEmpty(Variable) then MsgBox " Toca la trompeta"
>> > If Not IsEmpty(Variable) then MsgBox " Toca la trompeta"
>> >
>> > Pero no es lo que deseaba hacer. ¿Como puedo tener la seguridad de que
>> > una variable tiene algún valor y obtenerlo? y
>> > ¿como anular ese valor ( no cero que es un valor posible ) ?
>> >
>> > Saludos
>> > Des
>> >
>> >
>>
>>
>
>


Respuesta Responder a este mensaje
#5 KL
16/07/2005 - 09:27 | Informe spam
Hola Desastres,

Y cual es el problema de basar tu contador en el valor de la celda y no en
el de la variable entonces? P.ej.:

For Each c In rng
If Not IsBlank(c) Then
Contador=Contador+1
'El resto de tu codigo
End If
Next c

Saludos,
KL


"Desastres" wrote in message
news:
Hola KL, Gracias.

No tengo el código a mano (esta en otro Pc sin conexión) pero el
planteamiento es muy sencillo.( la solución, para mi,
es otra cosa).
En un proceso comercial se pueden definir tres tipos de documentos:
Pedido, Factura pro forma y Factura comercial (
entre otros ).
Supón el numero/ código del pedido en la columna 6, el de la factura pro
forma en la 8 y la Factura comercial en la 10.
Como el proceso, en este caso, comienza por el pedido, cada una de las
líneas tiene código de pedido y fecha de pedido,
pero no es obligatorio( al menos en mi planteamiento) que se pase una
Factura pro forma de todas las líneas del pedido
( por tanto alguna línea en Factura Pro forma no tendrá valor , o lo que
es lo mismo la variable que la recoja valdrá
cero. Si pido el valor de la variable en este momento, no sabré si se ha
inicializado o no, salvo que ponga un contador
paralelo a ella que me recoja todas las veces que no ha sido cero, con lo
cual sabría que ha sido inicializada si el
contador es al menos 1..
La misma proporción entre Pedido y pro forma se puede establecer entre Pro
forma y Factura comercial definitiva. ( en
este caso columna 10 )
Se trataba tan solo de intentar sacar el máximo partido con los menos
pasos posibles.
Saludos
Des



"KL" escribió en el mensaje
news:
Hola Desastres,

Pues con los tipos numericos va a ser dificil si no imposible, dado que
el
valor inicial (por defecto) es tambien uno de los valores permitidos por
tu
macro. De todas formas, por que no expones tu codigo y pensamos juntos en
alguna solucion radicalmente distinta?

Saludos,
KL


"Desastres" wrote in message
news:%
> Hola KL, Gracias.
>
> Si la variable ( utilicé Single) toma valores distintos en un proceso y
> coincide que el ultimo o una secuencia al final
> , tiene por valor cero( el mismo valor que por defecto ) , no podré
> discernir si ha sido inicializada o no.
>
> Aún así me has ayudado, pero quisiera encontrar una forma de obtener
> como
> respuesta la seguridad de que la variable se
> ha "llenado" o no.
> Es decir, obtener algo similar al IsEmty de una Variant o el Is nothing
> de
> un rango no encontrado con un Find.
>
> Saludos
> José Luis
>
> "KL" escribió en el mensaje
> news:%
>> Hola Desastres,
>>
>> No estoy seguro de entender lo que intentas hacer. En todo caso
>> decirte
>> que
>> al declarar una variable como:
>>
>> Single, Double, Long, Integer, etc. - el valor de la variable por
>> defecto
>> es
>> 0 y no puede ser "" a no ser que fuerces la conversion redeclarandola
>> o
>> mediante alguna de las funciones de conversion tipo CStr, etc.
>>
>> String - el valor de la variable por defecto es "", y aunque le
>> asignes
>> numeros seran cadenas de texto, p.ej. "0", "1", "333", etc. Tambien se
>> puede
>> forzar la conversion p.ej. mediante CDbl, CLng, etc.
>>
>> Boolean - el valor de la variable por defecto es False, etc. etc.
>>
>> Variant - adoptara el tipo segun el valor que le asignes (por cierto
>> es
>> el
>> tipo por defecto si no se ha declarado la variable expresamente) y
>> puede
>> variar facilmente en teimpo de ejecucion.
>>
>> Comentas mas detalles?
>>
>> Saludos,
>> KL
>>
>>
>>
>> "Desastres" wrote in message
>> news:
>> > Buenas tardes.
>> > Tengo unas variables levantiscas. Recogen datos del tipo Código de
>> > documento, fecha y valor del documento.
>> > Quería declararlas como Single, pero si lo hago, con las
>> > instrucciones
>> > siguientes:
>> >
>> > If variable = "" then msgbox " Toca la trompeta"
>> > If variable <>"" then msgbox " Toca la trompeta"
>> >
>> > resulta que la trompeta no se calla.
>> >
>> > Para conseguir que se calle la trompeta la mitad de las veces, tengo
>> > que
>> > declar las variables como Variant y utrilizar :
>> >
>> > If IsEmpty(Variable) then MsgBox " Toca la trompeta"
>> > If Not IsEmpty(Variable) then MsgBox " Toca la trompeta"
>> >
>> > Pero no es lo que deseaba hacer. ¿Como puedo tener la seguridad de
>> > que
>> > una variable tiene algún valor y obtenerlo? y
>> > ¿como anular ese valor ( no cero que es un valor posible ) ?
>> >
>> > Saludos
>> > Des
>> >
>> >
>>
>>
>
>






Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida