icono animado como resultado de una fórmula

01/09/2005 - 17:58 por Rubén | Informe spam
Hola compañeros "excelianos".
El problema es el siguiente, digamos que necesito "facilitar la vida" a unos
compañeros... cómo podría hacer para que un icono animado apareciera si el
contenido o el resultado de una fórmula es el esperado? Quien dice un icono
dice un sonido...

Muchas gracias
 

Leer las respuestas

#1 Héctor Miguel
01/09/2005 - 23:36 | Informe spam
hola, Rubén !

... necesito "facilitar la vida" a unos compa#eros...
... hacer... que un icono animado apareciera si el contenido o el resultado de una formula es el esperado?
Quien dice un icono dice un sonido...



->refiriendonos a sonidos<- ...
existen varias formas de lograr lo que deseas ;)
- usando los eventos de 'la hoja' [o los del libro] p.e.
el evento '_Change' [cuando 'dicha' celda cambia por 'entrada directa']
el evento '_Calculate' [cuando su resultado cambia por 'efectos de calculo' -en otras celdas-]
'contras': usar los eventos [generalmente] 'destroza' la posibilidad de 'des-hacer' los cambios [inhibe el 'UnDo'] :((
- [aunque hay 'otras varias'...] para todas es necesario hacer 'llamadas' a las API's del Windows MediaManager
y existen [al menos] tres 'sub-secciones' del WMM que se pueden utilizar:
- PlaySound -> 'mas util' cuando 'falla' la busqueda del archivo 'a tocar'
- sndPlaySound -> 'mas util' cuando 'necesitas' que la musica toque 'mientras la macro continua'
- mciExecute -> igual a la anterior, 'acepta' las extensiones 'midi' [como -largos- archivos mp3, midi, etc.]
=> NO TODOS los 'formatos de compresion' estan 'cubiertos' POR TODAS las opciones señaladas :( < [tal parece que todo tiene sus 'pros' y 'contras'] :((
- [creo que...] la forma 'mas versatil' para lo que requieres es...
crear una funcion 'personalizada' [y 'llamarla' como a 'cualquier otra' funcion de hoja de calculo] ;)

con los siguientes 'supuestos' [y con la primera de las opciones: 'PlaySound']:
- A1 es la celda que se va a 'monitorear' [cualquier valor, texto, formula, etc.]
- A2 'tiene' el 'operador de comparacion' [p.e. =, >=, <>, etc.] => si vas a usar la igualdad, ANTEPON un apostrofo >'=< <- A3 contiene el dato 'contra' el cual se hara la 'comparacion'
- C1 es la 'ruta al archivo' que se tocara 'si se cumple' la condicion [p.e. C:\Windows\Media\Reciclaje de Windows XP.wav]
- C2 es la 'ruta al archivo' que se tocara 'si NO se cumple la condicion [p.e. C:\Windows\Media\Ir_end.wav] =>'opcional'<- C3 es la celda donde 'usaras' la funcion 'personalizada' p.e. =AvisarSiCumple(A1,A2,A3,C1,C2)
[o puedes usar 'valores directos' en la funcion, p.e.: =AvisarSiCumple(35,"=",36,C1,C2)

- los 'argumentos' de la funcion son: =AvisarSiCumple(Comparar,Operador,Condicion,ArchivoSiCumple,ArchivoSiNoCumple)
- 'segun' el/los archivo/s que especifiques...
si NO 'existe/n'... 'tocara' un sonido 'asincrono' [speakers de la pc]
si SI 'existe/n'...
si 'se puede/n tocar'... se toca/n
si NO 'se puede/n tocar'... ni modo !!!... no hara 'sonido alguno' ;)

el codigo te lo adjunto en seguida [espero que sea +/- lo que solicitas] comentas?
saludos,
hector.

== en un modulo de codigo 'normal' =Private Declare Function _
Usar_PlaySound _
Lib "winmm.dll" _
Alias "PlaySoundA" ( _
ByVal Archivo As String, _
ByVal Modulo As Long, _
ByVal Bandera As Long) As Long
Function AvisarSiCumple(ByVal Comparar As Variant, _
ByVal Operador As String, _
ByVal Condicion As Variant, _
ByVal ArchivoSiCumple As String, _
Optional ByVal ArchivoSiNoCumple As String = "") As String
If Evaluate("""" & Comparar & """" & Operador & """" & Condicion & """") Then
Usar_PlaySound ArchivoSiCumple, 0&, &H1 Or &H20000
AvisarSiCumple = "Cumplio !!!"
ElseIf ArchivoSiNoCumple <> "" Then
Usar_PlaySound ArchivoSiNoCumple, 0&, &H1 Or &H20000
AvisarSiCumple = "NO Cumplio !!!"
Else: AvisarSiCumple = "NO Cumplio !!!"
End If
End Function

Preguntas similares