Ejecucion de macro al cambiar el valor de una celda

Controller

New Member
Joined
Jun 19, 2002
Messages
27
Hola a todos!

¿Como puedo hacer que una macro se ejecute automaticamente cade vez que cambia el valor de una celda?

Tengo una macro que pivota una tabla con distintos valores en funcion del mes, ahora mismo cada vez que cambio el mes, tengo que ejecutar la macro para que la "pivot table" se actualice. El valor del mes se encuentra en una celda concreta.

Gracias por la ayuda
 

Some videos you may like

Excel Facts

Copy formula down without changing references
If you have =SUM(F2:F49) in F50; type Alt+' in F51 to copy =SUM(F2:F49) to F51, leaving the formula in edit mode. Change SUM to COUNT.

Juan Pablo González

MrExcel MVP
Joined
Feb 8, 2002
Messages
11,959
Esto se hace con el evento Change() de la hoja, así:

<pre>Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then MiMacro
End Sub</pre>

Esto llamaría el macro MiMacro cada vez que la celda A1 cambie.
 

Controller

New Member
Joined
Jun 19, 2002
Messages
27
¡Eso es rapidez en contestar, si señor!

Mil gracias y saludos desde San Sebastian, España....
 

Controller

New Member
Joined
Jun 19, 2002
Messages
27
Juan Pablo,

Por mas que lo intento no logro hacerlo funcionar.

¿Donde deben insertarse esas lineas de código? ¿En mi propia macro?....

Gracias....
 

valedor

New Member
Joined
Aug 1, 2002
Messages
15
1.- Entra al libro donde quieras poner el codigo
2.- Entra al Editor del Visual Basic (Alt+F11)
3.- Da un doble click en la hoja donde te interese dejar el codigo, esta la veras en el Explorador de proyectos, si no lo ubicas en el siguiente vinculo hay una breve descripcion de esta ventana

http://www.vbalym.netfirms.com/intro.html

4.- Despues del doble click, en la ventana de codigo, copia el codigo que te envio Juan Pablo
5.- Por supuesto la macro a la que llamas debe de existir en un modulo de codigo



¿Donde deben insertarse esas lineas de código? ¿En mi propia macro?....
 

Torno

New Member
Joined
Oct 3, 2013
Messages
1
Esto se hace con el evento Change() de la hoja, así:


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then MiMacro
End Sub

Esto llamaría el macro MiMacro cada vez que la celda A1 cambie.

y si es un rango de celdas ?? como seria esa linea ???
por ejemplo mi macro es esta:

Sub limitartexto()
Dim limite As Object
Range("A2:G100").Select
For Each limite In Selection
limite.Value = Left(limite, 5)
Next
End Sub
Saludos.
 

Greg Truby

MrExcel MVP
Joined
Jun 19, 2002
Messages
10,013
Bueno, vamos a suponer que usted dió el rango de celdas que vas a observar el nombre "rngCeldasEspeciales". Entonces cada vez que usted cambia una celda o celdas multiples que se encuentran dentro de rango observado (y nombrado), su macro correrá.

<font face=Consolas, "Lucida Sans Typewriter", "Lucida Console", "Courier New", Monospace><SPAN style="color:#00007F">Private</SPAN> <SPAN style="color:#00007F">Sub</SPAN> Worksheet_Change(<SPAN style="color:#00007F">ByVal</SPAN> Target <SPAN style="color:#00007F">As</SPAN> Range)<br><br>    <SPAN style="color:#00007F">Const</SPAN> c_strNameOfMonitored <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">String</SPAN> = "rngCeldasEspeciales"<br><br>    <SPAN style="color:#00007F">Dim</SPAN> rngIntersect    <SPAN style="color:#00007F">As</SPAN> Excel.Range, _<br>        rngMonitored    <SPAN style="color:#00007F">As</SPAN> Excel.Range<br>        <br>    <SPAN style="color:#00007F">Set</SPAN> rngMonitored = Me.Range(c_strNameOfMonitored)<br>    <br>    <SPAN style="color:#00007F">On</SPAN> <SPAN style="color:#00007F">Error</SPAN> <SPAN style="color:#00007F">Resume</SPAN> <SPAN style="color:#00007F">Next</SPAN><br>    <SPAN style="color:#00007F">Set</SPAN> rngIntersect = Application.Intersect(Target, rngMonitored)<br>    <br>    <SPAN style="color:#00007F">If</SPAN> <SPAN style="color:#00007F">Not</SPAN> rngIntersect <SPAN style="color:#00007F">Is</SPAN> <SPAN style="color:#00007F">Nothing</SPAN> <SPAN style="color:#00007F">Then</SPAN><br>    <br>        myMacro rngIntersect<br>        <br>    <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">If</SPAN><br>    <br><SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Sub</SPAN><br><br><SPAN style="color:#00007F">Sub</SPAN> myMacro(<SPAN style="color:#00007F">ByRef</SPAN> rngCellsChanged <SPAN style="color:#00007F">As</SPAN> Excel.Range)<br><br>    MsgBox "The address of the cell(s) you changed was:" _<br>            & vbCr & vbCr & rngCellsChanged.Address(False, False), vbInformation<br><br><SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Sub</SPAN><br></FONT>
 

Greg Truby

MrExcel MVP
Joined
Jun 19, 2002
Messages
10,013
Bueno, ahora que he contestado la pregunta que usted sí hizo, una pregunta para usted. Los datos que usted está cortando. ¿Están importados de otro archivo o pegados con copiar y pegar? ¿O están teclados a mano? Porque si están teclados a mano, usted podría usar validación de datos para limitar el largo del valor entrado a la celda.
 

sebascadavid123

New Member
Joined
May 16, 2015
Messages
2
Greg, me puedes explicar el codigo que utilizaste por favor para correr la macro si se cmabia el rango? soy nuevo en esto...
Gracias, Saludos
 

Watch MrExcel Video

Forum statistics

Threads
1,102,029
Messages
5,484,274
Members
407,436
Latest member
Szafranski

This Week's Hot Topics

  • Finding issue in If elseif else with For each Loop
    Finding issue in If elseif else with For each Loop I have tried this below code but i'm getting in Y column filled with W005. Colud you please...
  • MsgBox Error
    Hi Guys, I have the below error show up when i try and run my macro in File1 but works fine if i copy and paste the same code into file2. [ATTACH...
  • CELL FORMAT - IF CONDITION
    My Cell Format is [B]""0.00" Cr". [/B]But in the cell, it is showing 123.00 for editing. (123 is entry figure). (Data imported from other...
  • Show numbers nearly the same
    Is this possible. I have a number that can change very time eg 0.00001234 Then I have a lot of numbers 0.0000001, 0.0000002, 0.00000004...
  • Please i need your help to create formula
    I need a formula in cell B8 to do this >>if b1=1 then multiply ( cell b8) by 10% ,if b1=2 multiply by 20%,if=3 multiply by 30%. Thank you in...
  • Got error while adding column and filter
    Got error while adding column and filter In column Z has some like "Success" and "Error". I want to add column in AA if the Z cell value is...
Top