Visual Basic: Cómo hago que corra una macro sin Enter?

josevaldesv

Board Regular
Joined
May 13, 2004
Messages
95
Hola...

Toda su ayuda ha sido inigualable,
pero ahora no sé cómo arreglar un detalle.

Tengo una macro que pone más de 3 formatos condicionales en la columna A, pero el valor de A se da automáticamente después de que yo cambio B, por ejemplo. (En A tengo una fórmula que hace referencia a B).

Mi problema es que tengo que apretar F2 Enter en cada celda de A para que la macro valide el dato resultado de la fórmula y ya me ponga los diferentes colores.

Existe una manera en que no tenga que hacer esto yo? Quisiera incluso no tener que recurrir a una macro que haga F2 Enter por mí todas las veces.

Saludos,
 

Excel Facts

What did Pito Salas invent?
Pito Salas, working for Lotus, popularized what would become to be pivot tables. It was released as Lotus Improv in 1989.
Lo siento José, pero no puedo duplicar su problema. Si pongo formato condicionales en A2, la cual tiene una fórmula sencilla: =B2*2 y cambio B2, los formatos en A2 cambian como deben. ¿Tal vez no entendí bien?
 
Upvote 0
No prob.

Mi problema es este... te explico.

Quiero tener 6 colores diferentes en A, que interactúen con lo que yo pongo.
if cel = "" Color 1. Blanco (default color)
if cel = G Color 2. Verde (1er color en formato condicional)
if cel = Y Color 3. Amarillo (2do color en formato condicional)
if cel = R Color 4. Rojo (3er color en formato condicional)
if cel = B Color 5. Azul (desde la macro lo saca)
if cel = N Color 6. Gris (desde la macro lo saca)

Los de formato condicional los pone automáticamente, dependiendo del valor.
Si en la columna A tengo una fórmula que reacciona a lo que hay en B, tipo =if(b1>100,"G","Y")
entonces dependiendo de lo que yo ponga en B, me pondrá en verde o amarillo la celda de A.
El formato condicional dice que si es G, lo ponga verde, si es Y, lo ponga amarillo, y si es R lo ponga Rojo.

El color cambia SIN TENER QUE PRESIONAR ENTER, ya que reacciona al resultado de la fórmula.

Mi problema es cuando, por ejemplo, quiero que sea B, o sea azul.
La macro identifica que debe cambiar a azul, pero no lo hace sino hasta que me voy a la celda, presiono la tecla F2 y luego le doy Enter.

Copio el macro que tengo.

Private Sub Worksheet_Change(ByVal Target As Range)
' Multiple Conditional Format
Dim rng As Range
' Only look at single cell changes
If Target.Count > 1 Then Exit Sub
' Adjust Format range to suit
Set rng = Range("A:A")
' Only look at that range
If Intersect(Target, rng) Is Nothing Then Exit Sub
' Adjust conditions to suit
If Left(Target, 1) <> "B" Or Left(Target, 1) <> "N" Then _
Target.Interior.ColorIndex = 0
If Left(Target, 1) <> "B" Or Left(Target, 1) <> "N" Then _
Target.Font.ColorIndex = 1
If Left(Target, 1) = "B" Then Target.Interior.ColorIndex = 5 ' Blue
If Left(Target, 1) = "B" Then Target.Font.ColorIndex = 2 ' White
If Left(Target, 1) = "N" Then Target.Interior.ColorIndex = 16 ' Gray
End Sub

Sólo quisiera saber si existe una manera en que se ponga del color que pongo en la macro SIN presionar Enter.

Saludos,
 
Upvote 0
CALCULO

Uppsss creo que tienes configurado el calculo Manual tan solo tienes que ponerlo en AUTOMATIC para que corra la macro sola.

Tools / Options / Calculation / Automatic / OK
 
Upvote 0
José,

Es un buen inicio. Pero usted escogió el blanco equivocado. En vez de chequer si Target hace intersección con columna A, chequee columna B, ajustandos los Offsets de acuerdo con la lógica nueva. (Si es que los valores de todas las de A dependen de las de B.)

Si hay unas de A que no dependen de B, entonces, hay que SET un variable tipo rango a las celdas de A, y revisarlos uno por uno (FOR EACH) cada vez que hay un evento de cambio (o tal vez Calculate sería mejor) no importando qué fue Target. Obviamente este tipo de solución aumento el "overhead" entonce trate de evitarlo si puede.

Saludos,
 
Upvote 0
Gracias por los tips.

Como tengo que correr una macro que hace algunos cálculos, le agregué que simplemente filtrara las celdas que busco, y que las ponga del color que yo quiero.
No es tipo formato condicional automático, pero funciona y no hace lento el programa.

Gracias...
 
Upvote 0

Forum statistics

Threads
1,215,409
Messages
6,124,733
Members
449,185
Latest member
hopkinsr

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top