Hacer referencia a la celda actual con un macro

Buen día.
Mi duda es la siguiente: Necesito hacer un macro que me cambie el color en una celda específica (la actual) después de usar una función. Pero no se trata de formato condicional sino del uso del comando CELL o CELLS no estoy seguro.
Este es el código que tengo pero me funciona sólo para la celda "I16"y quisiera generalizarlo para que sirviera para cualquier celda actual.
Function AVISOFORMCELDA(Origen As Variant)
If Origen.Value = "Ingrese todos los campos antes de GUARDAR" Then
Range("I16").Font.Color = RGB(128, 128, 128)
Else
Range("I16").Font.Color = RGB(255, 0, 0)
End If
AVISOFORMCELDA = Origen
End Function
Lo que necesito es cambiar el Range("I16") por la celda actual. Gracias!

1 respuesta

Respuesta
1
Creo que esto es lo que necesitas
Function AVISOFORMCELDA(Origen As Variant)
If Origen.Value = "Ingrese todos los campos antes de GUARDAR" Then
ActiveCell.Font.Color = RGB(128, 128, 128)
Else
Range("I16").Font.Color = RGB(255, 0, 0)
End If
AVISOFORMCELDA = Origen
End Function
Creo que esto es lo que necesitas
Function AVISOFORMCELDA(Origen As Variant)
If Origen.Value = "Ingrese todos los campos antes de GUARDAR" Then
ActiveCell.Font.Color = RGB(128, 128, 128)
Else
ActiveCell.Font.Color = RGB(255, 0, 0)
End If
AVISOFORMCELDA = Origen
End Function
Perdón no había corregido la segunda parte
No, no estoy preguntando por la celda activa sino por la celda "actual" de una fórmula. Es decir, una fórmula que altera la celda donde está la fórmula, no la celda donde estoy ubicado. ¿Me hago entender?
Gracias por la respuesta de todos modos.
No entiendo lo que necesitas, podrías ser más claro en la pregunta.
Si puedes pon un ejemplo más detallado indicando dirección de celdas y resultado que desesas obtener
Ok, sorry. Lo que necesito exactamente es programar una función donde el caso sería más o menos el siguiente:
Como se que hay funciones en Excel (ejemplo la función CELL) que hacen referencia a la casilla misma, y se utilizan para cosas como indicar el alto en puntos, el ancho en puntos, o el tipo de fuente de la casilla. Entonces yo quiero crear una función nueva en donde la celda A5 cambie el color de su letra o realice cualquier cosa de acuerdo al valor de la celda C5. No como un formato condicional sino como una función.
Pero, por eso ActiveCell no me sirve. Por que apunta a la celda en la cual el cursor estuvo.
No se si me entiende ahora. Pero si no, tranquilo. Por ahora pude omitir esa necesidad en el proyecto que estoy haciendo y de todos modos le daré 5 por el interés.
La verdad esto me ha tenido liado porque cada pregunta es como un reto, yo no soy de sistemas pero me encanta este mundo porque te pone a pensar.
En todo caso lo único que se me ocurrió, espero te sirva fue poner un controlador de cambios, pensando que el cambio se efectúe en una sola celda la macro sería la siguiente:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
On Error Resume Next
Cells.Select
With Selection.Font
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
Cells.Select
Selection.Find(What:="AVISOFORMCELDA", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
If ActiveCell.Value = "Ingrese todos los campos antes de GUARDAR" Then
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
End If
End If
End Sub
Claro esto dejando tu función tal como estaba, ya que con la macro anterior lo que hago es buscar esa fórmula en todo el libro de excel.
Si los cambios no se detectan en una sola celda y lo necesitas por rango corriges con esto:
datos = "B5:B7"
If Not Application.Intersect(Target, Range(datos)) Is Nothing Then
End If
End Sub
Entiendo que cada pregunta es un reto. Me incribí como experto en un par de categorías y las preguntas que he podido responder también han sido con algo de esfuerzo. Otras me ha tocado ignorarlas por que las desconozco del todo. Lástima que no hay forma de rechazar las preguntas para que los usuarios no queden en espera.
Ahorita estoy ocupado para leer línea por línea el código que me dio pero se que me servirá mucho cuando lo revise detalladamente. Algo nuevo aprenderé de él con las funciones y comandos que utilizó. Gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas