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

#11 Héctor Miguel
19/07/2005 - 07:14 | Informe spam
hola, Des !

Mostrar la cita
-> con los datos 'conocidos' y de acuerdo con el 'contenido original' de la consulta de este 'hilo'...
[segun yo]... 'pudiera' ser aplicable [obviamente] quizas haran falta 'ciertas' adaptaciones/modificaciones/... :D

-> 'aprovechando' que con los [nuevos] comentarios 'describes' una situacion [mas bien]... distinta...
[igual y -nuevamente- mi imaginacion 'ha volado mas alla'... de lo necesario :))]
te comento 'entre lineas' ;)

si cualquier duda... o equivoque el camino... o informacion adicional... comentas?
saludos,
hector.
=> ... problema... entender... que pasa y como obtengo los elementos de la matriz... y no encontrando documentacion, no me salgo
Mostrar la cita
1) podrias 'pensar' en las matrices como [si fueran] rangos en hojas [matrices estaticas o dinamicas] p.e.
Dim Mis_filas(6) => 'genera' una matriz uni-dimensional [como si se tratara -solo- de 6 filas en una hoja de calculo]
Dim Mi_rango(6, 2) => 'genera' una matriz bi-dimemsional ['hablamos' de un rango de 6 filas y 2 columnas]
-> la 'cuenta' de los elementos en una matriz se inicia desde 0 [cero] hasta n_elementos MENOS 1 [sean filas o columnas]
[a menos que al inicio del modulo se especifique: ->Option Base 1<-]
2) una vez que has 'metido' datos en la matriz [entiendo no hay problemas aqui]... puedes 'traerlos/llamarlos' segun su posicion [fila/columna]
MsgBox Mis_filas(3) [trae la fila 4... o a menos que tengas 'Option Base 1'... => MsgBox Mis_filas(4) <=]
MsgBox Mi_rango(3, 1) [trae la fila 4 de la segunda columna... o... MsgBox Mi_rango(4, 2) ->Option Base 1<- ??]

Mostrar la cita
3) [solo una duda]... si por la expresion: 'Por cada elemento de la matriz'... te refieres a un bucle 'For Each ... Next'
[creo que] no tiene 'impacto' si 'dejas/omites' Option Base 0 [por omision] o cambias a Option Base 1 [si no se necesita de un 'contador'] -?-

Mostrar la cita
-> y ['por lo que veo'...] seguiras 'recibiendo calabazas' :-(( [perdon por el 'chascarrillo' :D y...] enseguida mi [intento de] 'explicacion'...
4) si a la variable 'declarada' ->Dim GrupoAlbaranes()<- le 'metes' un array que [supongo] se referira a libros ->=array(Art,Cli,Ban,Est,Com,Fam)<-
-> los parentesis 'indican' que se trata de una matriz [de dimension/es] 'variable/s' y... ANTES de que sea posible de usarla...
'tendras que' establecer cuantos elementos va a contener [ReDim] y... 'llenar' UNO A UNO... [filas/columnas o... ReDim Preserve]
o... si la vas a llenar a traves de la funcion Array(...)... deberas declararla SIN los parentesis
con respecto de la instruccion donde 'intentas'... 'generar'... 'variables al vuelo'...
=> Set "l"&Art(((un elemento de la matriz))) = workbooks("l"& "elemento de la matrz" &".xls") < a) NO es posible 'pedirle' a un codigo que 'genere' variables... al azar, al vuelo... o 'segun sean necesarias' :-(
=> toma en cuenta que 'tratas' de GENERAR variables de un 'tipo' -de objeto- 'controlado' por la aplicacion [workbooks, worksheets, etc.] < => a menos que estes dispuesto a usar 'codigo que genere codigo' <= [lo que conlleva otro tipo de visicitudes] :))
=> ademas de que te estaras 'alejando' de lograr un codigo +/- 'delgado' <= :-(
b) SI puedes hacer que el codigo [re]'asigne/llene/establezca/...' valores a variables ->ya declaradas<- [explicita o implicitamente]
#12 Desastres
19/07/2005 - 15:16 | Informe spam
Hola Héctor. ! y Gracias

Mostrar la cita
Estoy seguro de ello

Mostrar la cita
Más que distinta, multiple. El que me respondieras con Proceso = Array("Pedido", "F. Prof", "F. Com") me dió ìe a
comentar un procerso que quise implementar en otro programa (aún sin exito)

Mostrar la cita
No se exactamente en qué estas pensando, pero ... puede ser.

Mostrar la cita
me salgo
Mostrar la cita
he "metido" en la matriz
Mostrar la cita
calculo]
Esta parte , hasta las de cuatro dimensiones, creo que las puedo imaginar

Mostrar la cita
Yo prefiero "ver" directamente a que elemento, o en que numero de elemento pienso es decir Option base=1

Mostrar la cita
su posicion [fila/columna]
Mostrar la cita
lo que me cuesta trabajo , mejor dicho no sé hacer es:
For each "cosa" in "la matriz"
Call abrirLibro(cosa)
next
o
for bucle = 1 to "numero contado de elementos de la matriz"
call abrirLibro(bucle)
next bucle
Y esto si es que el numero de orden (bucle) puede sustituir al nombre de libro al cual representa.

Mostrar la cita
Next'
sí, me referia a esto
Mostrar la cita
Blas se puede ir a la cama.

Mostrar la cita
me siento mas seguro con Axe, perdoón con Option base=1
Mostrar la cita
Ya decia yo...
Mostrar la cita
ego te absolvo in nomine

Mostrar la cita
libros ->=array(Art,Cli,Ban,Est,Com,Fam)<-


Mostrar la cita
¿ se necesita hacer a "dedos" o se puede hacer con bucles, por ejemplo desde una hoja?
[filas/columnas o... ReDim Preserve]
Mandeeee!

Mostrar la cita
Blas ya tiene bastante sueño

Mostrar la cita
:-(
¿ Ni siquiera si te declaras amigo?¿ o por hacer un favor?

Mostrar la cita
[workbooks, worksheets, etc.] <No percibo la gravedad de mis intenciones

Mostrar la cita
:))
! Hay si pudiera/ supiera ¡
Mostrar la cita
Algunas veces, las cosas interesantes estan lejanas

Mostrar la cita
[explicita o implicitamente]
Sí, esto ya lo hago en alguna ocasion

Saludos
Des
#13 Héctor Miguel
20/07/2005 - 04:01 | Informe spam
hola, Des !

Mostrar la cita
[p.e.]
Dim GrupoAlbaranes ' suponiendo que la variable sera llenada con la funcion Array(...)
Dim Elemento ' si vas a manejar los bucles de tipo For Each ... Next
Dim Libro As Byte ' si vas a manejar los bucles de tipo For Contador = 1 To n ... Next
GrupoAlbaranes = Array("Mi libro de articulos", "Mi libro de clientes", "Mi libro de bancos", "Mi libro esto", "Mi libro com", "Mi libro fam")

op1: usando bucles for each - next
For Each Elemento In GrupoAlbaranes
Call AbrirLibro(GrupoAlbaranes(Elemento))
Next

op2: usando bucles for contador - next
For Libro = 1 To Ubound(GrupoAlbaranes)
Call AbrirLibro(GrupoAlbaranes(Libro))
Next

=> [obviamente] se asume que la extension -.xls- y/o la ruta de acceso las majena el procedimiento 'llamado' -?-
y que existe alguna verificacion que evite que un libro se abra [o se intente abrir] dos veces -?-

o... suponiendo que la variable sera llenada por un bucle que 'tome' el dato del nombre de los libros de un rango en una hoja...
Dim GrupoAlbaranes(), Fila As Integer, Filas As Integer
With Worksheets("hoja1")
Filas = .Range("a65536").End(xlUp).Row
ReDim GrupoAlbaranes(Filas)
For Fila = 1 To Filas
GrupoAlbaranes(Fila) = .Range("a" & Fila)
Next
End With

=> lo que 'responderia' a tu inquietud acerca de...
Mostrar la cita
=> con respecto a... 'generar'... 'variables al vuelo'... [me temo que queda incluido]...
Mostrar la cita
loco... ntinuamos ?
saludos,
hector.
#14 Desastres
20/07/2005 - 09:57 | Informe spam
Hola Héctor. Gracias.

Creo que me has dado base para remodelar, una vez mas, el planteamiento de apertura de conjuntos de libros,.
En el futuro creo que lo modificaré de nuevo para seguir lo que alguien definió como " al vuelo", es decir:
en este momento abro varios libro, trabajo en cada momento con uno de ellos ( manteniendo todos abiertos) y luego los
cierro todos.
Es una idea que no esta mal para empezar, pero que se puede mejorar siguiendo un símil de puertas oscilantes ( abrir,
ver o pasar y cerrar) .
Y en el siguiente futuro, abrir, pasar a matriz y cerrar. Modificar la matriz y pasar dato a dato de nuevo a los libro
bases de datos.
Pero para eso necesito aún mucha seguridad del dominio de las matrices, para estar seguro del resultado.
Quizás siga teniendo que llamar a tu puerta.

Mostrar la cita
Sí , asi es
Mostrar la cita
Tambien esta hecho.
Mostrar la cita
una hoja...
Mostrar la cita
ah orate respondo que creo que aún no estoy preparado ( tiempo y conocimientos), pero si estas disponible en el futuro,
puede que llegue el momento.

Mostrar la cita
Saludos
Des
#15 Héctor Miguel
20/07/2005 - 10:48 | Informe spam
hola, Des !

Mostrar la cita
ya sea que [me] respondas 'ah ora'... o despues... que 'lames' a la puerta o que este disponible [yo?... o alguien mas] :))
[creo que] la seguridad en 'el dominio'... es 'cosa de tiempo'... y los conocimientos... es 'cosa de practica' ;)
[y como te mencione alguna vez]... 'mientras nos aguanten...' :D

saludos,
hector.
Ads by Google
Search Busqueda sugerida