2007 con VB: asignación de función propia a una celda y modif. o tr

01/08/2007 - 20:00 por Luismi | Informe spam
Hola expertos,

tengo un pequeño problema:

he creado una función en VB que se asigna como fórmula a una celda y lo que
hace es, en función del valor que pongas, modificar el color de otras. Por
ejemplo, asigno la formula a la celda c4 = LMB_HORARIO("c4"), la función lo
que hará es en la fila 4 pintar varias celdas (f4,g4,h4,i4) de diferente
color. Pues bueno, cuando intento asignar ese color a las celdas susodichas
me da un error 1004 y no me lo hace. Supongo que tendrá que ver con que
realiza el cálculo estando el foco dentro de la celda C4 y, por lo tanto, no
puede modificar otras... ¿Hay alguna solución a esto? Paso el código:

Function LMB_HORARIO(strTurno As String) As String

Const c_Red = 92
Const c_Green = 0
Const c_Blue = 0

Dim strName As String
Dim iFila, iCol As Integer

Select Case strTurno
Case "c1" 'De 10 a 14 y de 16 a 19

LMB_HORARIO = strTurno
Call LMB_PINTA(ActiveCell.Row, 6, 9, 92, 0, 0)
Call LMB_PINTA(ActiveCell.Row, 12, 14, 92, 0, 0)

Case Else
LMB_HORARIO = strTurno

End Select

End Function
Sub LMB_PINTA(iFil As Integer, iIni As Integer, iFin As Integer, iRed As
Integer, iGreen As Integer, iBlue As Integer)

Dim m As Integer
Dim strName As String

strName = ActiveSheet.Name
For m = iIni To iFin
Cells(iFil, m).Select
With Selection.Interior
.Color = RGB(iRed, iGreen, iBlue)
End With
Next m

End Sub

Otra cosa, ¿Cómo puedo hacer para que estas fórmulas creadas personalmente y
asignadas a una celda se actualicen automáticamente?

Muchas gracias y saludos,

luism.:-)
 

Leer las respuestas

#1 Héctor Miguel
02/08/2007 - 05:29 | Informe spam
hola, Luis !

he creado una funcion en VB que se asigna como formula a una celda y lo que hace es
en funcion del valor que pongas, modificar el color de otras.
Por ejemplo, asigno la formula a la celda c4 = LMB_HORARIO("c4")
la funcion lo que hara es en la fila 4 pintar varias celdas (f4,g4,h4,i4) de diferente color [etc. etc. etc.]



1) [hasta donde se]... no existe funcion utilizable como tal en hojas de calculo [aun las UDF] a la que le este permitido [por excel]
-> modificar las propiedades de los objetos range, mucho menos de objetos range 'ajenos' a donde esta siendo utilizada :-( [razon ?]:
-> el -principal- 'motor' de excel, es llevar la pista [o tracking] de cuales celdas 'dependen' de cuales otras [precedentes/dependientes]
-> si alguna funcion 'pudiera' modificar las propiedades de las celdas [lo que incluye propiedades como .Value, .Formula, etc.]
[seguramente] excel 'reportaria' resultados 'inesperados' [erraticos, falsos, etc.] -?-

2) lo que si puedes es usar formatos condicionalles, aprovechar los codigos de eventos en los modulos de hojas/libro, etc. ;)

saludos,
hector.

Preguntas similares