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

#6 Desastres
16/07/2005 - 10:34 | Informe spam
Gracias Kl.

No hay ningún problema. Yo mismo te lo decía.
Mostrar la cita
En ocasiones lo utilizo , generalmente con un bucle for next, pero me hubiera gustado ahorrar alguna línea

La mayor parte del tiempo de desarrollo lo dedico ( además de modificar mis conocimientos) a prevenir todo los errores
que se pudieran producir, tanto voluntariamente (caracteres inadecuados, etc) como involuntariamente, ( salir de un
proceso inicializado por errores de programación, por ejemplo).

A la primera parte pertenece la consulta, saber si a una variable ( no variant ) estaba inicializada, con lo cual me
ahorraba algunas líneas ( siempre procuro el código mas corto para hacer un trabajo).

En cualquiera de los casos me has dado la respuesta.
Como casi siempre hay alternativa a un código, lo modificaré

Saludos
Des






"KL" escribió en el mensaje news:%
Mostrar la cita
#7 Héctor Miguel
17/07/2005 - 00:40 | Informe spam
hola, chicos !

Mostrar la cita
segun lo comentado en este hilo [y segun lo entiendo]... si 'solo' necesitas...
-> consultar el estado que guardan 3 procesos [Pedido, Factura pro forma y Factura comercial] ->entre otros<-
-> que se encuentran en las columnas 6, 8 y 10 [F, H y J] ->entre otras<-
-> segun 'cierta' fila [p.e. la celda activa de la hoja 'apropiada'... que es la que uso en los ejemplos] ->o varias<- -?-
y 'asumiendo' que NO 'te escaparias' de alguno que otro bucles for...next :((
[que vienen a ser 'el corazon' de las propuestas siguientes]
-> una alternativa podria ser consultar si 'IsEmpty' [directamente] ->la/s celda/s<-
o... 'pasar' el contenido de las celdas por variables ->de tipo variant<- :(( [entre otras] :))
el [posible] 'ahorro' de lineas [probablemente] dependera de...
-> la forma, momento y veces en que vayas a necesitar 'hacer las consultas' :D
[quizas habra una 'cierta' rapidez si utilizas lineas que llamen a funciones 'ex-profeso'] -?-

en fin... analiza, modifica, [o lo que sea necesario] los ejemplos que siguen ;)
si cualquier duda [o informacion adicional]... comentas?
saludos,
hector.
=' una macro para llamar a las funciones '
Sub Mis_Variables()
MsgBox DirectoDeLasCeldas(ActiveCell.Row)
MsgBox PasandoPorVariables(ActiveCell.Row)
End Sub
' funcion 'en directo' '
Function DirectoDeLasCeldas(ByVal Fila As Long) As String
Dim Msj As String, Col As Byte, Proc As Byte, Proceso
Msj = "Variable" & vbTab & "Inicializ." & vbTab & "Valor" & vbCr & String(15, "=")
Proceso = Array("Pedido", "F. Prof", "F. Com")
For Col = 6 To 10 Step 2
Msj = Msj & vbCr & Proceso(Proc) & vbTab & _
IIf(IsEmpty(Cells(Fila, Col)), "NO", "SI") & vbTab & ">" & Cells(Fila, Col) & "<"
Proc = Proc + 1
Next
DirectoDeLasCeldas = Msj
End Function
' funcion por variabes '
Function PasandoPorVariables(ByVal Fila As Long) As String
Dim Msj As String, Sig As Byte, Proceso, Estado(3)
Msj = "Variable" & vbTab & "Inicializ." & vbTab & "Valor" & vbCr & String(15, "=")
Proceso = Array("Pedido", "F. Prof", "F. Com")
Estado(0) = Range("f" & Fila)
Estado(1) = Range("h" & Fila)
Estado(2) = Range("j" & Fila)
For Sig = 0 To 2
Msj = Msj & vbCr & Proceso(Sig) & vbTab & _
IIf(IsEmpty(Estado(Sig)), "NO", "SI") & vbTab & ">" & Estado(Sig) & "<"
Next
Erase Estado
PasandoPorVariables = Msj
End Function
#8 KL
17/07/2005 - 12:31 | Informe spam
Hola chicos,

Se me ocurre otra idea. Si lo que se busca es solo saber si una variable se
ha inicializado o sea si hay al menos una celda no vacia en el rango
examinado, en vez de usar bucles se podria usar algo como:

1. Application.CountA(rng)
2. rng.Find "*"
3. rng.SpecialCells(xlCellTypeConstants ) y/o
rng.SpecialCells(xlCellTypeFormulas) y comprobando si es Nothing.

Saludos,
KL


"Héctor Miguel" wrote in message
news:
Mostrar la cita
#9 Desastres
18/07/2005 - 16:50 | Informe spam
Hola Kl Gracias.

Aunque en este caso no la pueda utilizar,es buena cosa lo que propone. Aún "meto demasiadas veces las manos" en las
bases de datos y no siempre están, y otras veces no pueden estar, ordenadas más que por uno solo de los campos que te
indicaba, y ese campo es el que siempre está lleno.
Aún así es otra buena idea.

Saludos
Des


"KL" escribió en el mensaje news:
Mostrar la cita
#10 Desastres
18/07/2005 - 17:22 | Informe spam
Hola Hector.
Gracias.

Siento, en este caso no poder aplicar lo que me propones. Aún así lo guardo para cuando sepa hacerlo.

El p5roblema es entender lo que pasa y como obrendo los elementos de la matrid.
Estoy intentando ver algo sobre matrices, y no encontrando documentacion , no me salgo.

Estoy queriendo hacer algo que en castellano es muy sencillo pero no consigo hacerlo con matrices.
Lo he hecho por un preceso normal y funciona, pero queria aprender algo sobre matrices no encuentro la forma de utilizar
lo que he "metido" en la matriz.
Me explico
Estoy intentando reescribir lo que ya me funciona, y que comencé a hacer heces 4 años, sistematizando los nombres de las
variables. En lugar de WorkbookArticulos,wbArticulos, libroArticulos, lArticulos, lArt quiero uniformar y utilizar
lArt para libro, hArt para hoja, cArt para cabecera en Art, hasta aqui es cuestion de reparas macro a macro y cambiar.
l-libro, h-hoja,etc
Pero ademas queria hacerlo en algunos casos con matrices y es donde me pierdo.
Hoy concretamente pretendia algo asi como:
Option base =1
Dim GrupoAlbaranes()
GupoAlbaranes=array(Art,Cli,Ban,Est,Com,Fam)
y luego decir
Por cada elemento de la matriz
on error resume next
Set "l"&Art(((un elemento de la matriz))) = workbooks("l"& "elemento de la matrz" &".xls")
if error <>0 then set "l"&Art(((un elemento de la matriz))) = Workbooks.Open(PATH & workbooks("l"& "elemento de la
matrz" &".xls"))

Pero me sigue dando calabazas.
Seguiré estudiándolo un poco.

Saludos
Des



"Héctor Miguel" escribió en el mensaje news:
Mostrar la cita
varias<- -?-
Mostrar la cita
Ads by Google
Search Busqueda sugerida