Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

AYUDA : Ejecutar macro al cambiar valor de celda...

1,670 views
Skip to first unread message

adicto

unread,
Mar 7, 2006, 10:51:01 AM3/7/06
to

Hola amigos :

Queria pedirles ayuda en lo siguiente, quisiera que al cambiar el valor de una celda que esta dentro de un rango de una columna, por ejemplo G5:g15, se ejecutara una macro que tomara varios valores de la linea donde se este situado y envie un mail en base a esos valores, lo del mail ya lo tengo listo, me falta controlar si se ha cambiado el valor de una de las celdas en el rango G5:G15, estaba viendo las funciones ONTIME, ONREPEAT, ONKEY, pero no veo como las podria usar...

Ustedes me podrian orientar ???.. o a lo mejor seria otra funcion VBA que hay que usar..

De antemano, muchas gracias...


--
adicto

------------------------------------------------------------------------
Ver este tema: http://www.softwaremix.net/viewtopic-492904.html

Enviado desde http://www.softwaremix.net


KL

unread,
Mar 7, 2006, 4:13:43 PM3/7/06
to
Hola adicto,

Prueba lo siguiente:
1) Haz clic-derecho sobre el nombre de la hoja en cuestion (en una de las pestanas de la parte de abajo de la ventana de Excel).
2) Elige la opcion Ver Codigo para abrir el editor VBA.
3) Una vez en el Editor VBA, en la ventana mas grande a la derecha pega el codigo que te pongo a continuacion sustituyendo "'Aqui tu codigo..." con tus instrucciones:

'---------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect([G5:G15], Target) Is Nothing Then Exit Sub
'Aqui tu codigo...
End Sub
'---------------------

4) Ahora pulsa Alt+F11 para volver a la hoja.
5) Prueba cambiar alguna celda dentro de [G5:G15]

Saludos,
KL

"adicto" <adicto...@no-mx.softwaremix.net> wrote in message news:adicto...@no-mx.softwaremix.net...

adicto

unread,
Mar 8, 2006, 8:11:34 AM3/8/06
to

Muchas gracias KL, era precisamente lo que queria, activar una macro al cambiar el valor de una celda...
Me aparecio si un problema, es que el codigo que le inserte, en base al valor de una celda envia un mail, lo que me sucedio es raro, le ingrese el valor para que me enviara el mail y me hizo varias copias del mail y me mostro varias pantallas de mail...
Quizas se deba a el tema de change, como puedo controlar que ya fue hecho el cambio y solo se ejecute una vez ???
Sera necesario que ingrese el codigo ???.. bueno, lo hago
-----
Esta controla que se este en una celda del rango, le puse un color de fondo para identificarla

Private Sub Worksheet_Change(ByVal Target As Range)

If Selection.Interior.ColorIndex = 37 Then
datoactual = ActiveCell.Value
limiteinferior = ActiveCell.Offset(0, 1).Value
limitesuperior = ActiveCell.Offset(0, 2).Value
If datoactual < limiteinferior Then
ActiveCell.Offset(0, 4).Value = "Normal"
ActiveCell.Offset(0, 4).Interior.ColorIndex = 4
ElseIf datoactual > limitesuperior - 1 Then
ActiveCell.Offset(0, 4).Value = "Critico"
ActiveCell.Offset(0, 4).Interior.ColorIndex = 3
Else
ActiveCell.Offset(0, 4).Value = "Warning"
ActiveCell.Offset(0, 4).Interior.ColorIndex = 6
End If
If ActiveCell.Offset(0, 4).Interior.ColorIndex = 3 Then
EnviarMail
End If
End If
End Sub

---
La siguiente envia el mail...

Private Sub EnviarMail()
'Es necesario añadir la refeerncia Microsoft Outlook Library (herramientas/referencias)
Dim OutApp As Outlook.Application
Dim OutMail As Outlook.MailItem
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(olMailItem)
With ActiveCell
plataforma = .Offset(0, -4).Value
nodo = .Offset(0, -3).Value
.
.
.
.
Set OutMail = Nothing
Set OutApp = Nothing

End Sub

Gracias....

0 new messages