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
 

Excel Facts

Can Excel fill bagel flavors?
You can teach Excel a new custom list. Type the list in cells, File, Options, Advanced, Edit Custom Lists, Import, OK

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

ADVERTISEMENT

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

ADVERTISEMENT

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,020
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,020
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
 

Forum statistics

Threads
1,144,060
Messages
5,722,276
Members
422,420
Latest member
losc

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
Top