Foros del Web » Soporte técnico » Ofimática »

ejecutar macro al cambiar de celda

Estas en el tema de ejecutar macro al cambiar de celda en el foro de Ofimática en Foros del Web. que tal a tod@s... espero que esten bien,.. estoy empezando a crear algunas macros sencillas... y me estoy basando de ejemplos de una pagina de ...
  #1 (permalink)  
Antiguo 17/01/2007, 14:15
 
Fecha de Ingreso: agosto-2004
Mensajes: 296
Antigüedad: 20 años, 3 meses
Puntos: 0
ejecutar macro al cambiar de celda

que tal a tod@s... espero que esten bien,..

estoy empezando a crear algunas macros sencillas... y me estoy basando de ejemplos de una pagina de internet... pero ahi no explican muy bien las propiedades de los 'objetos' (celdas,hojas,etc)..... pero debo reconocer que si me a servido de mucha ayuda, pues como les digo, soy nuevo en esto de hacer macros....

entonces... donde puedo ver los objetos que existen cuando se programa una macro, por ejeplo, ActiveCell, cuando le pongo un '.' punto, sale una listita con sus metodos y propiedades..... donde puedo ver la descripcion de cada metodo y propiedad , de cada objeto o elemento que existe en las macros...??? y bueno.... ahorita que ando aqui., les queria preguntar, como puedo hacer para que una macro se ejecute en cuando me cambien de cualquier celda o surga algun cambi en una celda cualquiera de una hoja determinada????

es decir... requiero que mi macro se ejecute cuando yo me cambie de cualquier celda.. ya sea para ingresar un nuevo registro en mi hoja o por haber modificado alguna celda......

muchas gracias por su ayuda
  #2 (permalink)  
Antiguo 19/01/2007, 08:34
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 11 meses
Puntos: 144
Re: ejecutar macro al cambiar de celda

Cita:
Iniciado por suprempada Ver Mensaje
...entonces... donde puedo ver los objetos que existen cuando se programa una macro, por ejeplo, ActiveCell, cuando le pongo un '.' punto, sale una listita con sus metodos y propiedades..... donde puedo ver la descripcion de cada metodo y propiedad , de cada objeto o elemento que existe en las macros...???
Pues selecciona el elemento de la lista (seleccionando toda la palabra), y pulsa F1 para obtener ayuda acerca del mismo.
Cita:
Iniciado por suprempada Ver Mensaje
y bueno.... ahorita que ando aqui., les queria preguntar, como puedo hacer para que una macro se ejecute en cuando me cambien de cualquier celda o surga algun cambi en una celda cualquiera de una hoja determinada????
Debes usar este procedimiento:
Código:
Sub Worksheet_Change(ByVal Target As Range)
'bla, bla, bla...
End Sub
Si te fijas, en la ventana de VBA arriba, hay un desplegable que pone (General), y Worksheet. A la derecha cuando se activa el Worksheet, se activan otras opciones, entre ellas, la del evento Change, que es la que tienes que utilizar, poniendo el macro como te indicaba anteriormente.

Salu2
  #3 (permalink)  
Antiguo 19/01/2007, 14:01
 
Fecha de Ingreso: agosto-2004
Mensajes: 296
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: ejecutar macro al cambiar de celda

muchas gracias por tu ayuda 3 pies, con F1 ya me aparece la descripcion de los objetos... gracias...

pero en el caso de ejecutar una macro cuando se cambie una celda, mmmmm... tal vez entendi mal, porque puse todo el codigo de mi macro dentro de estas lineas que me diste:

Sub Worksheet_Change(ByVal Target As Range)
mi codigo de la macro
End Sub

pero no hace nada... entonces, no se si asi debia de ser o de otra forma... me podrias explicar nuevamente porfavor, te lo agradecere mucho de verdad....
mil gracias.
  #4 (permalink)  
Antiguo 21/01/2007, 11:06
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 11 meses
Puntos: 144
Re: ejecutar macro al cambiar de celda

Pues deberia funcionarte. Si quieres, pon tu código para echarle un vistazo, pero ya te digo, que con tu macro encapsulado dentro de Worksheet_Change(ByVal Target As Range), se debería ejecutar ante cualquier cambio que se efectúe en cualquier celda de la hoja de cálculo.

Salu2
  #5 (permalink)  
Antiguo 22/01/2007, 09:51
 
Fecha de Ingreso: agosto-2004
Mensajes: 296
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: ejecutar macro al cambiar de celda

he aqui el codigo:

Sub Worksheet_Change(ByVal Target As Range)

Application.ScreenUpdating = False

Call limpia_posiciona

'Worksheets(1).Activate

Range("A10").Activate

valor = ActiveCell.Value

While Mid(ActiveCell.Value, 1, 2) <> ""

Select Case Mid(ActiveCell.Value, 1, 2)

Case "AG":
Selection.EntireRow.Copy
Worksheets("Aguascalientes").Activate
'ActiveCell.Value = valor
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Range("A1").Select
Case "BC":
Selection.EntireRow.Copy
Worksheets("Tijuana").Activate
'ActiveCell.Value = valor
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Range("A1").Select

Case "ME":
Selection.EntireRow.Copy
Worksheets("Mexicali").Activate
'ActiveCell.Value = valor
ActiveSheet.Paste
ActiveCell.Offset(1, 0).Range("A1").Select

End Select

Worksheets(1).Activate
ActiveCell.Offset(1, 0).Range("A1").Select
valor = ActiveCell.Value

Wend

Application.CutCopyMode = False
Application.ScreenUpdating = True

End Sub



y entonces... cada vez que cambio de celda no pasa nada..... que podra ser??? que estare poniendo mal????
  #6 (permalink)  
Antiguo 22/01/2007, 10:17
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 11 meses
Puntos: 144
Re: ejecutar macro al cambiar de celda

Hombre, yo había entendido que querías que se ejecutase el macro cada vez que cambiase el contenido de una celda, y no cada vez que cambiases de celda.

La verdad es que no tiene mucho sentido ejecutar una macro, cada vez que te desplazas. ¿No es mejor ejecutarla, cuando haya cambios en la hoja, es decir, cuando alguna celda cambie?.

la verdad es que no sé si se podrá ejecutar una macro, son solo desplazarse de una celda a otra, sin haber habido cambios...

Salu2
  #7 (permalink)  
Antiguo 22/01/2007, 15:02
 
Fecha de Ingreso: agosto-2004
Mensajes: 296
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: ejecutar macro al cambiar de celda

si, tienes toda la razon 3 pies... creo que mi logica estaba algo desviada, porque ahora que lei tu respuesta, si, tienes razon, es ilogico ejecutar una macro cada vez que se cambia de celda,..... pero bueno.... de todos modos, cuando le cambio un valor a cualquier celda, la macro sigue sin ejecutarse.... y bueno,.. aqui tengo una duda...

la hoja en donde estoy haciendo los cambios en las celdas se llama 'Secuencial'.... y bueno, estoy algo confundido de como debe ir la linea del Sub....

debe ir asi:

Sub Worksheet_Change(ByVal Target As Range)

o asi:

Sub Secuencial_Change(ByVal Target As Range) ????

pero de todos modos... ya le puse las dos formas, y de ninguna funciona cuando en la hoja 'Secuencial' le cambio el valor a alguna celda... la macro sigue sin ejecutarse.... que podra ser que este mal ????
  #8 (permalink)  
Antiguo 23/01/2007, 02:53
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 11 meses
Puntos: 144
Re: ejecutar macro al cambiar de celda

En modo VBA (Alt+F11), arriba a la izquierda verás dos carpetas:

- Microsoft Excel Objetos
- Módulos

Debes colocarlo dentro de Microsoft Excel Objetos, y dentro de la Hoja de cálculo que te aparecerá dentro de esa carpeta, y que debe llamarse Secuencial.

Salu2
  #9 (permalink)  
Antiguo 23/01/2007, 10:22
 
Fecha de Ingreso: agosto-2004
Mensajes: 296
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: ejecutar macro al cambiar de celda

que tal 3 pies......
ya abri el entorno de VB... y en el panel izquierdo, le di doble click a la hoja 'secuencial', ahi en Microsoft Excel Objec y pegue el codigo de la macro encapsulado entre estas dos lineas:

Sub Worksheet_Change(ByVal Target As Range)
'el codigo de la macro.....
End Sub

y ahora.. al parecer si ejecuta la macro cada vez que hay un cambio en alguna celda de 'Secuencial'... pero ahora me marca error en la funcion limpia_posiciona() que se llama dentro de la macro.... esa funcion tambien la pegue dentro de 'Secuencial',, he aqui la funcion:

Function limpia_posiciona()

no_hojas = Worksheets.Count

i = 2

While i <= no_hojas

Worksheets(i).Activate
'Cells.Select
Range("A10:K655").Select 'en esta linea me manda el debug
Selection.ClearContents
Range("A10").Select

i = i + 1

Wend

Worksheets(1).Activate

End Function

y antes... cuando ejecutaba la macro estando en el Modulo1, es decir... Herramientas -> Macro -> Ejecutar....... no me marcaba error..... y ahora si me manda a esa linea , cual es el error????
  #10 (permalink)  
Antiguo 23/01/2007, 11:00
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 11 meses
Puntos: 144
Re: ejecutar macro al cambiar de celda

La función debes dejarla dentro de la carpeta Módulos.

Salu2

PD: Lo acabo de probar y no me da error.
  #11 (permalink)  
Antiguo 23/01/2007, 11:47
 
Fecha de Ingreso: agosto-2004
Mensajes: 296
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: ejecutar macro al cambiar de celda

muchas gracias 3pies.... borre la funcion limpia_posicion de la hoja 'Secuencial' y la deje en el Modulo1 y ya jala bien.... MUCHAS GRACIAS POR TU AYUDA 3 PIES!!!!!!!
  #12 (permalink)  
Antiguo 23/01/2007, 18:05
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 20 años, 11 meses
Puntos: 11
Re: ejecutar macro al cambiar de celda

Hola Suprempada, yo me encuentro en una situacion parecida a la tuya, estoy aprendiendo a escribir macros para excel, y no es facil encontrar informacion clara de los metodos, propiedades y como se maneja la logica de VB. Te dejo un link a un manual que fue el mas ajustado a lo que buscaba

http://www.elguille.info/VB/cursos_vb/basico/indice.htm

Es un curso muy amplio, facil de entender y completo, espero que te sirva, saludos ;)
__________________
-- Nunca te des por vencido, aún vencido -- Web
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 13:38.